预览加载中,请您耐心等待几秒...
在线预览结束,喜欢就下载吧,查找使用更方便
如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
HYPERLINK"http://yangguangfu.iteye.com/blog/815787"java设计模式之——代理模式
1,什么是代理模式?
代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。
2,策略模式有什么好处?
在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。
3,代理模式一般涉及到的角色有:
抽象角色:声明真实对象和代理对象的共同接口;代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能代替真实对象。同时,代理对象可以在执行真实对象操作时,附加其他的操作,相当于对真实对象进行封装。真实角色:代理角色所代表的真实对象,是我们最终要引用的对象。
4,应用场景举例:
比如西门庆找潘金莲,那潘金莲不好意思答复呀,咋办,找那个王婆做代理,表现在程序上时是这样的体现的
先说说这个场景中的要素:一种类型的女人,潘金莲,王婆,西门庆,后来扩展的贾氏也和西门庆勾上了,我们是假设的,然后西门庆找潘金莲happy,但潘金莲不好意思直接,就找个王婆代理呗。我们看看具体代码。
先定义一种女人
Java代码HYPERLINK"javascript:void()"\o"收藏这段代码"
packagecom.yangguangfu.proxy;
/**
*
*@author阿福(trygf521@126.com)<br>
*定义一种类型的女人,王婆和潘金莲都属于这个类型的女人
*/
publicinterfaceKindWoman{
//这种女人能做什么事情呢?
publicvoidmakeEyesWithMan();//抛媚眼
publicvoidhappyWithMan();//和男人那个....
}
packagecom.yangguangfu.proxy;
/**
*
*@author阿福(trygf521@126.com)<br>
*定义一种类型的女人,王婆和潘金莲都属于这个类型的女人
*/
publicinterfaceKindWoman{
//这种女人能做什么事情呢?
publicvoidmakeEyesWithMan();//抛媚眼
publicvoidhappyWithMan();//和男人那个....
}
一种类型嘛,那肯定是接口,定义个潘金莲
Java代码HYPERLINK"javascript:void()"\o"收藏这段代码"
packagecom.yangguangfu.proxy;
/**
*
*@author阿福(trygf521@126.com)<br>
*定义一个潘金莲是什么样的人
*/
publicclassPanJinLianimplementsKindWoman{
@Override
publicvoidhappyWithMan(){
System.out.println("潘金莲和男人在做那个...");
}
@Override
publicvoidmakeEyesWithMan(){
System.out.println("潘金莲抛媚眼...");
}
}
packagecom.yangguangfu.proxy;
/**
*
*@author阿福(trygf521@126.com)<br>
*定义一个潘金莲是什么样的人
*/
publicclassPanJinLianimplementsKindWoman{
@Override
publicvoidhappyWithMan(){
System.out.println("潘金莲和男人在做那个...");
}
@Override
publicvoidmakeEyesWithMan(){
System.out.println("潘金莲抛媚眼...");
}
}
再定义个丑陋的王婆
Java代码HYPERLINK"javascript:void()"\o"收藏这段代码"
packagecom.yangguangfu.proxy;
/**
*
*@author阿福(trygf521@126.com)<br>
*王婆这个人老聪明了,她太老了,是个男人都看不上她,
*但是她有智慧经验呀,他作为一类女人的代理!
*/
publicclassWangPoimplementsKindWoman{
privateKindWomankindWoman;
publicWangPo(){
//默认的话是潘金莲的代理
this.kindWoman=newPanJinLian();
}
//她可以是KindWoma