代理模式

代理模式包括两种角色:
1.抽象主题(Subject):抽象主题是一个接口,该接口是实际主题和
它的代理所共享的接口(代理和实际主题实现了共同相同的接口)
2.实际主题(RealSubject):实际主题是实现抽象主题接口的类。
实际主题的实例是代理角色(Proxy)要代理的对象。
3.代理(Proxy):代理是实现抽象主题接口的类
(代理和实际主题实现了相同的接口)。代理含有主题接口声明的变量
,该变量用来存放RealSubject角色的实例的引用,这样一来,
代理的实例就可以控制对它所包含的RealSubject角色的实例的访问,
即可以控制对它所代理的对象的访问,达到了代理的目的。
代理模式的优点:
1.代理模式可以屏蔽用户真正请求的对象,
使用户程序和真正的对象之间实现解耦。
2.使用代理来担当那些创建耗时的对象的替身。
适合使用代理模式的情景:
1.程序可能不希望用户直接访问该对象,而是提供一个特殊的对象
以控制对当前对象的访问。
2.如果一个对象(例如很大的图像)需要很长时间才能加载完成。
3.如果对象位于远程主机上,需要为用户提供访问该远程对象的能力。
package day15.demo4;
//代理模式
public class TestProxy1 {
    public static void main(String[] args) {
        Company c = new Secretary();
        c.makeBusiness();
    }
}
//公司
interface Company{
    abstract void makeBusiness();
}
//秘书
class Secretary implements Company{
    private Boss c;

    public Secretary(){
        super();
        c = new Boss();
    }
    public void makeBusiness() {
        c.makeBusiness();
    }
}
//老板
class Boss implements Company{

    public void makeBusiness() {
        System.out.println("亲爱的合作伙伴!有事记得找秘书!");
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章