設計模式之代理模式--靜態代理

不斷學習是爲了有一天可以蛻變成自己想成爲的人!

1、代理模式介紹

代理模式也成爲委託模式,是結構性設計模式。
代理在生活中非常常見,舉個例子,大家生活中經常聽說到運營代理商,我們去運營代理商哪兒跟他說充話費,然後運營代理商一頓操作,給我們充上了話費。實際上真正給我們充話費的是運營商而不是運營代理商,運營代理商只是幫助我們訪問了運營商,這就是一個典型的代理模式!

2、代理模式的定義

爲其他對象提供一種代理以控制對真實對象的訪問。
理解:代理模式核心是控制訪問

3、代理模式使用場景

1、當我們無法直接訪問一個對象的時候,可以使用代理間接訪問
2、不想讓某個對象被直接訪問

4、代理模式UML類圖

這裏寫圖片描述

代理模式中角色:
1、被代理者抽象
UML中的Subject
2、被代理者
UML圖中的RealSubject
3、代理者
UML圖中的Proxy

5、代理模式的示例

//被代理類抽象
public interface IMobileOperator {

    /**
     * 充值
     *
     * @param count 充值的數量
     */
    void recharge(int count);
}

//被代理類
public class MobileOperator implements IMobileOperator {

    @Override
    public void recharge(int count) {
        System.out.println("運營商充值金額:"+count);;
    }
}

//代理類
public class Proxy implements IMobileOperator {
    private IMobileOperator mobileOperator;

    public Proxy(IMobileOperator mobileOperator) {
        this.mobileOperator = mobileOperator;
    }

    @Override
    public void recharge(int count) {
        mobileOperator.recharge(count);
    }
}


//調用類
public class Client {
    public static void main(String[] args) {
        IMobileOperator mobileOperator = new MobileOperator();
        Proxy proxy = new Proxy(mobileOperator);
        //代理類來對真實對象進行訪問
        proxy.recharge(50);
    }
}

6、Android中代理模式的使用

這裏寫圖片描述

被代理類抽象:IActivityManager
被代理類:ActivityManagerNative是一個抽象類,實現是ActivityManagerService
所以被代理類是ActivityManagerService
代理類:ActivityManagerProxy

7、代理模式的優缺點

代理模式應用廣泛,幾乎沒有什麼缺點

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章