欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Java proxy(java代理模式实例分析),

来源: javaer 分享于  点击 20776 次 点评:192

Java proxy(java代理模式实例分析),


Java proxyjava代理模式

代理模式定义: 对其他对象提供一种代理来控制对这个对象的访问。

下面还是先上一段实例

Eg:

People接口,方法say(); // 说话


ChinesePeople类,重写了方法say() {syso(“我说的是汉语!”);} 

AmericanPeople类,重写了方法say() {syso(“我说的是英语!”);}

JapanesePeople类,重写了方法say() {syso(“我说的是日语!”);}


PeopleProxy类,

定义一个People对象的属性P

重写构造函数,来set属性P的值;

重写say()方法,方法体里是p.say();


至此代理模式已定义完成,下面是应用:

Public static void main(String args[]) {

// 定义三个people

People cp = new ChinesePeople();

People ap = new AmericanPeople();

Pelople jp = new japanesePeople();

 

// 分别定义三个代理

PeopleProxy cpp = new PeopleProxy(cp);

PeopleProxy app = new PeopleProxy(ap);

PeopleProxy jpp = new PeopleProxy(jp);

 

// 分别调用自己的say方法

cpp.say();

app.say();

jpp.say();

}


这就是java代理模式的应用,看到这里说不定会感到很郁闷,直接用cp.say()不就完事了,搞不懂为什么还要多加上代理这步,这不是没事找事?

 

事实肯定不是这样的,如果实际中没用更复杂的需求也就肯定不会出现什么代理模式了。这里我简单的举一个例子。

假如:say()方法满足不了cpp, app ,jpp 的需求,他们需要添加一个叫做eat()方法。

代理模式:此时就只需要在PeopleProxy类中添加一个叫做eat()的方法即可满足需求;

非代理模式:就需要在ChinesePeople, AmericanPeople, JapanesePeople这三个类中都加上eat()方法;

 

当三者eat()方法是相同时,“非代理模式”明显就有代码重用性低,耦合性高问题,而“代理模式”则没有;

当三者eat()方法不同时,“代理模式”和“非代理模式”都需要在ChinesePeople, AmericanPeople, JapanesePeople这三个类中都加上eat()方法,这时他们的效果是一样的。

通过以上的分析相信大家已经能很清楚的了解java的应用场景与好处了。


相关文章

    暂无相关文章
相关栏目:

用户点评