設計模式之代理模式--靜態代理
阿新 • • 發佈:2018-11-09
不斷學習是為了有一天可以蛻變成自己想成為的人!
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、代理模式的優缺點
代理模式應用廣泛,幾乎沒有什麼缺點