您的位置:首页
代理模式Proxy
2016-11-02 09:45
120 查看
需求:
小明帮小张送礼物给娇娇。
代码编写:
代理模式图解:
实际操作:
让代理类和实际操作类实现同一个接口。代理类中包含一个实际类对象,在创建代理类对象的时候隐式创建实际类对象,然后调用代理类的方法本质上都是调用是实际类对象的对应方法。
与装饰者模式类似。
小明帮小张送礼物给娇娇。
代码编写:
package com.t_11; import org.junit.Test; /** * 代理模式 * @author Administrator * 故事情节: * 小张请小明帮忙追小娇 */ public class t1 { @Test public void fun(){ XiaoZhang xiaozhang=new XiaoZhang(); xiaozhang.giveFlower(); xiaozhang.giveMilk(); xiaozhang.getChocolate(); } @Test public void fun2(){ XiaoMing xiaozhang=new XiaoMing(); xiaozhang.giveFlower(); xiaozhang.giveMilk(); xiaozhang.getChocolate(); } @Test public void fun3(){ XiaoMing1 xiaoming=new XiaoMing1("娇娇"); xiaoming.getChocolate(); xiaoming.giveFlower(); xiaoming.giveMilk(); } } class XiaoZhang{ public void giveFlower(){ System.out.println("小娇,花"); } public void getChocolate(){ System.out.println("小娇,巧克力"); } public void giveMilk(){ System.out.println("小娇,牛奶"); } } /*前面那是小张直接追求的小娇,也就没有代理这一说法,实际上,小张与小娇是不认识的*/ class XiaoMing{ public void giveFlower(){ System.out.println("小娇,花"); } public void getChocolate(){ System.out.println("小娇,巧克力"); } public void giveMilk(){ System.out.println("小娇,牛奶"); } } /*第二次忽视了小张的存在,也不应该是这样的,应该是小明帮小张送花,本质是小张的行为,而且,小张应该不认识小娇,所以不能直接给名字。*/ abstract class Gift{ public abstract void giveFlower(); public abstract void getChocolate(); public abstract void giveMilk(); } class XiaoZhang1 extends Gift{ private String name; public XiaoZhang1(String name){this.name=name;} @Override public void giveFlower() { System.out.println(name+",花"); } @Override public void getChocolate() { System.out.println(name+",巧克力"); } @Override public void giveMilk() { System.out.println(name+",牛奶"); } } class XiaoMing1 extends Gift{ private XiaoZhang1 xiaozhang1; public XiaoMing1(String girlName){ xiaozhang1=new XiaoZhang1(girlName); } @Override public void giveFlower() { xiaozhang1.giveFlower(); } @Override public void getChocolate() { xiaozhang1.getChocolate(); } @Override public void giveMilk() { xiaozhang1.giveMilk(); } } /* * 第三次使用的是代理模式,代理对象内部构成了一个原对象,然后使用原对象的方法完成指定操作。与装饰者模式类似,不同的是传入的只是构造原对象的重要组件,而不是原对象,而且不存在增强。 * */
代理模式图解:
实际操作:
让代理类和实际操作类实现同一个接口。代理类中包含一个实际类对象,在创建代理类对象的时候隐式创建实际类对象,然后调用代理类的方法本质上都是调用是实际类对象的对应方法。
与装饰者模式类似。
相关文章推荐
- 设计模式之Proxy(代理)
- 设计模式(8)-代理模式(Proxy)
- 设计模式之Proxy(代理)
- 设计模式袖珍版 连续转载之 - Proxy(代理)
- 代理(Proxy)模式 vs. 代理(Agency)机构
- java设计模式之Proxy(代理)
- 设计模式之Proxy(代理)
- 设计模式----Proxy(代理)模式
- 代理(Proxy)模式
- 设计模式之Proxy(代理)
- Proxy代理(结构型模式)
- 代理(Proxy)模式
- 设计模式之Proxy(代理)
- 设计模式与泡mm的关系之Proxy代理模式及代理模式的再思考
- 代理(Proxy)模式
- 设计模式之Proxy(代理)
- 设计模式(6)-代理模式(Proxy)
- 代理(Proxy)模式 vs. 代理(Agency)机构
- 设计模式之Proxy(代理)
- 设计模式之代理(Proxy)----对象结构型模式