代理模式

来源:互联网 发布:企业家的特质知乎 编辑:程序博客网 时间:2024/06/15 04:30
代理(Proxy),就是让别人去代表自己去做事。比如说:你饿了,然后你在美团下单点了个饭,那么美团就是你的代理,不需要你去做饭和买饭,它代替你去做。
更具体的说:隔壁班有个美眉叫小美,我想去追小美,可是我又和小美不认识,我有个小学同学叫小胖,他和小美一个班,我就叫小胖代我送礼物给她。这个时候小胖就是我的代理。我们用代码写出来更具体:
我想追小美,那就建一个 小苏:
public class Su{
//我既然要追她,那当然要给力点,送花送巧克力。送礼物方法:
public voidsongLW(){
System.out.println("送花!");
System.out.println("送巧克力!")
}
}
这个时候当然是要建一个表白对象小美呀:
public classXiaoMi{
//这个时候应该向小美表白送花,送巧克力了。可是小美和我不认识啊。不能直接表白吖。
//这个时候我该找小胖帮我带话,帮我送花,送巧克力。
}
这个时候我们创一个 小胖类:
public classXiaoPang{
//这个时候,我把我的花和巧克力交给小胖,让他代我去送花,送巧克力。调用送礼物方法:
Su wo = newSu();
//这里本来直接调用就能 wo.songLW() 就能直接送花送巧克力了。
//按照我们真实的思维来讲,要是小胖直接去送花、送巧克力,那么小美美很可能就会变成他女朋友。
//小胖也应该要有自己的处理方法,帮我表白的方法:
public voidbiaoBai(){
//这个时候小胖小用自己想好的台词这样帮我向小美表白:
System.out.println("小美,隔壁班的小苏想跟你交个朋友,这是他送你的礼物:");
//此时送上小苏准备的礼物:
wo.songLW();
}
}

这个时候,小胖走到小美
publicclass XiaoMi{
//这个时候小胖走到小美旁边,然后帮我表白:
publicstatic void main(String [] arga){
XiaoPang xp = new XiaoPang();
xp.biaoBai();
//小美碍于和小胖认识,不好拒绝,只好收下了。 /邪恶笑!未完待续。
}
}
控制台输出结果:
小美,隔壁班的小苏想跟你交个朋友,这是他送你的礼物:
送花!
送巧克力!

这就是代理模式,是不是很简单呢?代理模式不仅很多事不用自己去做(降低代码的耦合度,让代码更优雅),还有一个好处就是代理还可以在原来方法的基础上再加入其它的更多处理,就像小胖不仅帮我送礼物,还帮我去表白了。打个更好的比喻:一个MD5加密类,不要直接去调用,应该用代理类调用MD5加密,在MD5的基础上再加入一些其它的加密等干扰,这时候再让需要加密的类调用代理类来进行加密。代理类还能做很多其它的事,以上这种代理还是有很多不足的,下一篇再写一下更好的代理类。
原创粉丝点击