什么是代理模式呢?我很忙,忙的没空理你,那你要找我呢就先找我的代理人吧,那代理人总要知道
被代理人能做哪些事情不能做哪些事情吧,那就是两个人具备同一个接口,代理人虽然不能干活,但是被
代理的人能干活呀。
比如西门庆找潘金莲,那潘金莲不好意思答复呀,咋办,找那个王婆做代理,表现在程序上时这样的:
先定义一种类型的女人(接口):
- package com.fc.Proxy;
- public interface KindWoman {
- public void makeEyesWithMan(); //抛媚眼
- }
然后定义潘金莲:
- package com.fc.Proxy;
- public class PanJinlian implements KindWoman {
- public void makeEyesWithMan() {
- System.out.println("潘金莲在抛媚眼。。。");
- }
- }
再来个王婆,也就是潘金莲的代理人:
- package com.fc.Proxy;
- public class WangPo implements KindWoman {
- private KindWoman kindwoman;
- public WangPo() {
- this. kindwoman = new PanJinlian();//王婆默认是潘金莲的代理人
- }
- //王婆也可以是KindWomen的其他任何一个女人的代理,只要你是这一类型
- public WangPo(KindWoman kindWomen){
- this. kindwoman = kindWomen;
- }
- public void makeEyesWithMan() {
- this. kindwoman.makeEyesWithMan(); //王婆这么大年龄了,谁看她抛媚眼?!她代替别人抛
- }
- }
连个女猪脚已经登场,下面到西门庆了:
- package com.fc.Proxy;
- public class XiMenQing {
- public static void main(String[] args) {
- //把王婆叫出来
- WangPo wangPo = new WangPo();
- //然后西门庆就说,我要和潘金莲happy,然后王婆就安排了西门庆丢筷子的那出戏:
- wangPo.makeEyesWithMan(); //看到没,虽然表面上时王婆在做,实际上爽的是潘金莲
- }
- }
好了现在王婆为西门庆代理完了,说不准她还得给别人代理,假设现在又来了个潘金莲2号:
- package com.fc.Proxy;
- public class PanJinlian222 implements KindWoman {
- public void makeEyesWithMan() {
- System.out.println("潘金莲222在抛媚眼。。。");
- }
- }
然后西门庆又来找王婆帮忙勾引潘金莲2号:修改西门庆:
- package com.fc.Proxy;
- public class XiMenQing {
- public static void main(String[] args) {
- /* //把王婆叫出来
- WangPo wangPo = new WangPo();
- //然后西门庆就说,我要和潘金莲happy,然后王婆就安排了西门庆丢筷子的那出戏:
- wangPo.makeEyesWithMan(); //看到没,虽然表面上时王婆在做,实际上爽的是潘金莲
- */
- WangPo wangPo=new WangPo(new PanJinlian222());//这个不是默认代理,要往里传个参数
- wangPo.makeEyesWithMan();
- }
- }
说完这个故事,那额总结一下,代理模式主要使用了 Java 的多态,干活的是被代理类,代理类主要是
接活,你让我干活,好,我交给幕后的类去干,你满意就成,那怎么知道被代理类能不能干呢?同根就成,
大家知根知底,你能做啥,我能做啥都清楚的很,同一个接口呗。
相关推荐
C#设计模式(13)-Proxy Pattern C#设计模式(12)-Decorator Pattern C#设计模式(11)-Composite Pattern C#设计模式(10)-Adapter Pattern C#设计模式(9)-Prototype Pattern C#设计模式(8)-Builder ...
Android设计模式之代理模式(Proxy Pattern)
实现对象的复用——享元模式(二) 实现对象的复用——享元模式(三) 实现对象的复用——享元模式(四) 实现对象的复用——享元模式(五) 代理模式-Proxy Pattern 设计模式之代理模式(一) 设计模式之代理模式...
36种最新设计模式整理 Design Pattern: Simple Factory 模式 Design Pattern: Abstract Factory 模式 Design Pattern: Builder 模式 Design Pattern: Factory Method 模式 Design Pattern: Prototype 模式 ...
在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。 在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。
java 代理模式实现代码及设计详解:动态代理模式、静态代理模式
在个人自学阶段的23种设计模式代码的全部实现,全部使用Java编写,其中还包括各个设计模式在源码中的使用,每种设计模式都举了一个简单的小例子来进行实现,并加以注释 包名解释 一、DesignPattern 1.1 创建型模式 ...
C#设计模式(13)-Proxy Pattern 113 一、 代理(Proxy)模式 113 二、 代理的种类 114 三、 远程代理的例子 114 四、 代理模式的结构 115 五、 代理模式示例性代码 115 六、 高老庄悟空降八戒 117 七、 不同类型的...
NULL 博文链接:https://lym6520.iteye.com/blog/692896
23种设计模式(Design Pattern)的C++实现范例,包括下面列出的各种模式,代码包含较详细注释。另外附上“设计模式迷你手册.chm” 供参考。 注:项目在 VS2008 下使用。 创建型: 抽象工厂模式(Abstract Factory) ...
代理模式(Proxy Pattern) 3. 行为型模式 责任链模式(Chain of Responsibility Pattern) 命令模式(Command Pattern) 解释器模式(Interpreter Pattern) 迭代器模式(Iterator Pattern) 中介者模式...
代理模式(Proxy Pattern) 3 行为型模式 这些设计模式特别关注对象之间的通信。 责任链模式(Chain of Responsibility Pattern) 命令模式(Command Pattern) 解释器模式(Interpreter Pattern) 迭代器模式...
2、代理模式PROXY PATTERN 3、单例模式SINGLETON PATTERN 4、多例模式MULTITION PATTERN 5、工厂方法模式FACTORY METHOD PATTERN 6、抽象工厂模式ABSTRACT FACTORY PATTERN 7、门面模式FACADE PATTERN 8、适配器...
C#设计模式(13)-Proxy Pattern 一、 代理(Proxy)模式 二、 代理的种类 三、 远程代理的例子 四、 代理模式的结构 五、 代理模式示例性代码 六、 高老庄悟空降八戒 七、 不同类型的代理模式 八、 代理...
备忘录模式(Memento Pattern) 策略模式(Strategy Pattern) 抽象工厂模式(Abstract Factory Pattern) 代理模式(Proxy Pattern) 单例模式(Singleton Pattern) 迭代器模式(Iterator Pattern) 访问者模式(Visitor ...
代理模式(Proxy Pattern) 行为型: 13. 模板方法(Template Method) 14. 命令模式(Command Pattern) 15. 迭代器模式(Iterator Pattern) 16. 观察者模式(Observer Pattern) 17. 解释器模式(Interpreter Pattern) 18....
代理模式(Proxy Pattern) 行为型模式用来对类或对象怎样交互和怎样分配职责进行描述,主要包含以下11种设计模式: 责任链模式(Chain of Responsibility Pattern) 命令模式(Command Pattern) 解释...
创意设计模式 -- Abstract Factory - Done -- Builder - Done -- Factory Method -- Object Pool -- Prototype - Done -- Singleton - Done 结构设计模式 -- Adapter -- Bridge -- Composite -- Decorator - Done ...
代理模式(Proxy Pattern) 13. 模板方法(Template Method) 14. 命令模式(Command Pattern) 15. 迭代器模式(Iterator Pattern) 行为型: 16. 观察者模式(Observer Pattern) 17. 解释器...