今天杨哥给小伙伴们讲解设计模式中的代理模式,杨哥讲代理模式,通俗易懂,在杨哥看来其实啊,代理设计模式在我们的生活中处处可见,只是没有注意而已,现在杨哥举一个最简单,最能够回忆,最有情怀的经典例子帮助小伙伴初步理解代理模式,杨哥在上初中的时候呢,杨哥呢有一个很好的同学也是杨哥的哥们,这哥们呢,看上了隔壁班的一个小妹妹,在杨哥看来这小妹妹也确实美若天仙啊,哥们真有眼观,但问题就来了,杨哥的哥们呢,确实比较腼腆,不好意思跟小妹妹说话,尤其这么这么漂亮的小妹妹。
有一天,找到杨哥我帮他送一封情书给那个妹妹,在杨哥看来哥们的忙一定要帮啊,所以呢,杨哥义不容辞把情书送到了漂亮妹妹的手里,看她乐滋滋的,小妹妹以为这是杨哥送的,当时杨哥也是才貌双全啊,现在看来一脸沧桑啊,这是扯皮啊,杨哥如实交代了帮哥们送的啊,然后来来回回杨哥代送了几回合,他俩就这么度过了一段美好的青春啊,杨哥羡慕至极啊!
看到没有杨哥其实是在讲代理模式啊,其实真正有需求,真正要做事的是杨哥的哥们,杨哥只是充当代理的作用。好了,先上个图:
Subject 抽象类定义了RealSubject和Proxy的共用接口,这样就在任何使用RealSubject的地方都可以使用Proxy代替
package daili_designmode;
public abstract class Subject {
public abstract void Request();
}
RealSubject类是真正有需求的类,相当于杨哥的哥们
package daili_designmode;
public class RealSubject extends Subject{
@Override
public void Request() {
System.out.println("真实的请求");
}
}
Proxy代理类,也是代表的是杨哥啊
package daili_designmode;
public class Proxy extends Subject{
RealSubject realSubject;
@Override
public void Request() {
if (realSubject == null)
{
realSubject = new RealSubject();
}
realSubject.Request();
}
}
最后就是程序的入口
package daili_designmode;
public class ProxyMain {
public static void main(String[] args) {
Proxy proxy = new Proxy();
proxy.Request();
}
}
顺便上个效果图:
看到没有是程序入口中只有代理类,其实有好多的设计都使用了代理设计模式思想,比如WebService的原理,还比如小伙伴们要看国外某一个网站上的小妹妹,是不是需要找一个代理服务器呢,也就是所谓的翻墙咯,。
杨哥说的代理设计模式是不是很简单粗暴,直截了当呢,给杨哥点个赞或评个论啊,杨哥打字好辛苦啊。。。。。