1. 程式人生 > >設計模式之代理模式--靜態代理

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

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

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、代理模式的優缺點

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