代理模式

代理模式包括兩種角色:
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("親愛的合作伙伴!有事記得找祕書!");
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章