大话设计模式----代理模式
不到长城非好汉 人气:0一.代理模式:为其他对象提供一种代理以控制对这个对象的访问。
可分为四种:
1.远程代理:为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。
2.虚拟代理:真实对象的创建需要很大的开销,通过代理来实现它,减少开销,例如:大的图片加载。
3.安全代理:用来控制真实对象访问时的权限。
4.智能指引:当调用真实对象时,代理处理一些事。
二.UML省略。。。
三.代码示例
public interface GiveGift { void giveDolls(); void giveFlowers(); void giveChocolate(); } @Data public class SchoolGirl { private String name; private String age; } public class Pursuit implements GiveGift { SchoolGirl schoolGirl; public Pursuit(SchoolGirl schoolGirl) { this.schoolGirl = schoolGirl; } @Override public void giveDolls() { System.out.println(schoolGirl.getName() + "送你洋娃娃"); } @Override public void giveFlowers() { System.out.println(schoolGirl.getName() + "送你鲜花"); } @Override public void giveChocolate() { System.out.println(schoolGirl.getName() + "送你巧克力"); } } public class Proxy implements GiveGift { Pursuit pursuit; public Proxy(SchoolGirl schoolGirl) { this.pursuit = new Pursuit(schoolGirl); } @Override public void giveDolls() { pursuit.giveDolls(); } @Override public void giveFlowers() { pursuit.giveFlowers(); } @Override public void giveChocolate() { pursuit.giveChocolate(); } } public class TestProxy { public static void main(String[] args) { SchoolGirl schoolGirl = new SchoolGirl(); schoolGirl.setName("小龙女"); Proxy proxy = new Proxy(schoolGirl); proxy.giveFlowers(); proxy.giveDolls(); proxy.giveChocolate(); } }
以后所有的UML图都省略,直接上代码示例。
加载全部内容