首页 > 代码库 > 设计模式之代理模式

设计模式之代理模式

 今天杨哥给小伙伴们讲解设计模式中的代理模式,杨哥讲代理模式,通俗易懂,在杨哥看来其实啊,代理设计模式在我们的生活中处处可见,只是没有注意而已,现在杨哥举一个最简单,最能够回忆,最有情怀的经典例子帮助小伙伴初步理解代理模式,杨哥在上初中的时候呢,杨哥呢有一个很好的同学也是杨哥的哥们,这哥们呢,看上了隔壁班的一个小妹妹,在杨哥看来这小妹妹也确实美若天仙啊,哥们真有眼观,但问题就来了,杨哥的哥们呢,确实比较腼腆,不好意思跟小妹妹说话,尤其这么这么漂亮的小妹妹。

          有一天,找到杨哥我帮他送一封情书给那个妹妹,在杨哥看来哥们的忙一定要帮啊,所以呢,杨哥义不容辞把情书送到了漂亮妹妹的手里,看她乐滋滋的,小妹妹以为这是杨哥送的,当时杨哥也是才貌双全啊,现在看来一脸沧桑啊,这是扯皮啊,杨哥如实交代了帮哥们送的啊,然后来来回回杨哥代送了几回合,他俩就这么度过了一段美好的青春啊,杨哥羡慕至极啊!

          看到没有杨哥其实是在讲代理模式啊,其实真正有需求,真正要做事的是杨哥的哥们,杨哥只是充当代理的作用。好了,先上个图:

技术分享

 

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的原理,还比如小伙伴们要看国外某一个网站上的小妹妹,是不是需要找一个代理服务器呢,也就是所谓的FQ咯,。

    杨哥说的代理设计模式是不是很简单粗暴,直截了当呢,给杨哥点个赞或评个论啊,杨哥打字好辛苦啊。。。。。

 

设计模式之代理模式