“ 现在朋友圈真是太让人蛋疼了啊。 ”“怎么说?”“ 一堆代理,各种卖东西的,看着好烦人。”“哎,删了呗。”“都是朋友,哪里好意思删啊。”“这倒也是、、、哎,迫于生计,没办法咯。还好我不玩。”“对了,你不就是代理的鼻祖么,身为代理模式,你作何感想。”“以代理之道还治代理之身啊。”
最近出场率超级高,哦不,一直以来出场率都挺高的说的大名鼎鼎的模式,就是我-代理模式是也。有关我的定义如下:Provide a surrogate or placeholder for another object to control access to it.翻译过来就是说:为其他的对象提供一种代理以控制对这个对象的访问。通用类图如下:
代理模式又被称作委托模式,它是一项基本设计技巧。许多其他的模式,如策略、访问者模式本质上是在更特殊场合采用了代理模式,在日常应用中,代理模式也可以提供非常好的访问控制。在Struts2中的Form元素映射中就采用了动态代理模式。
使用我的好处如下:
具体的情景我们就以朋友圈卖吃的来说吧,恩,就卖辣条好了。 首先是一个公司的接口类,实现每个公司的简单功能:
1 public interface ICompany{ 2 //打上品牌 3 public void brand(String brand); 4 //出售 5 public void sell(); 6 }
然后是公司的具体实现类:
1 public class Company implements ICompany{ 2 private String name = ""; 3 //构造函数获取名字 4 public Company(String name){ 5 this.name = name; 6 } 7 8 //注册商标 9 public void brand(String name){ 10 System.out.println("公司的名字是:"+name); 11 } 12 13 //出售产品 14 public void sell(){ 15 System.out.println("最后三天清仓处理,买一箱送三箱。。。"); 16 } 17 }View Code
最后是最重要的代理实现了:
1 public class Proxy implements ICompany{ 2 private ICompany cp = null; 3 //通过构造函数传递代理的公司 4 public Proxy(ICompany cp){ 5 this.cp = cp; 6 } 7 //代理在朋友圈打品牌 8 public viod brand(String name){ 9 this.cp.brand(name); 10 } 11 12 //代理在卖东西 13 public void sell(){ 14 this.cp.sell(); 15 } 16 }View Code
好了,基本上实现就是这样了,最后友情送上场景类一个:
1 public class Client{ 2 public static void main(String[] args) { 3 //卫龙辣条,我的最爱 4 ICompany cp = new Company("卫龙"); 5 //定义一个代理,来卖辣条 6 ICompany proxy = new Proxy(cp); 7 //代理打品牌 8 proxy.brand("卫龙"); 9 //代理出售 10 proxy.sell(); 11 } 12 }View Code
至此,实现部分完毕。
场景真是数也数不清了,找人LOL、魔兽各种代练,找人代理卖房买房什么的老多了。下面说几种常见的代理情况:
荆轲刺秦王,设计模式心中藏,好了,今天到此结束。
PS:本博客欢迎转发,但请注明博客地址及作者~
博客地址: http://www.cnblogs.com/voidy/
博客新址: http://voidy.net
<。)#)))≦