Java proxy(java代理模式实例分析),
Java proxy(java代理模式实例分析),
Java proxy:java代理模式
代理模式定义: 对其他对象提供一种代理来控制对这个对象的访问。
下面还是先上一段实例
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的应用场景与好处了。
相关文章
- 暂无相关文章
用户点评