android設計模式——代理者模式
阿新 • • 發佈:2018-11-06
定義:也稱委託模式,為其他物件提供一種代理以控制對這個物件的訪問。
使用場景:有些物件由於某些原因(比如物件建立開銷很大,或者某些操作需要安全控制,或者需要程序外的訪問),直接訪問會給使用者或者系統結構帶來很多麻煩,我們可以在訪問此物件時加上一個對此物件的訪問層。
應用舉例:支票可以當錢的使用,律師代表幫人打官司。
類圖:
- Subject:抽象主題類,宣告真實與代理共同的介面方法,可以是一個抽象方法,也可以是一個介面。
- RealSuject:真實主題類,定義代理的所表示的真實物件,由其執行具體的業務邏輯
- ProxySubject:代理類,在實現的介面方法中呼叫真是主題中相應的介面方法執行。
- Client: 客戶類
關鍵程式碼:實現與被代理類組合
優點:
- 職責清晰。
- 高擴充套件性。
- 智慧化。
缺點:
- 因為客戶端和真實主題之間增加了代理類,所以有些請求可能會變慢。
- 有些代理類實現起來需要額外的工作,實現起來非常複雜
abstract class Subject{ public abstract void visit(); } class RealSubject extends Subject{ @Override public void visit() { // TODO 自動生成的方法存根 System.out.println("真正的Subject"); } } class ProxySubject extends Subject{ private RealSubject realSubject; public ProxySubject(RealSubject realSubject) { // TODO 自動生成的建構函式存根 this.realSubject = realSubject; } @Override public void visit() { // TODO 自動生成的方法存根 realSubject.visit(); } }
主程式
public static void main(String[] args) {
// TODO 自動生成的方法存根
RealSubject realSubject = new RealSubject();
ProxySubject proxySubject = new ProxySubject(realSubject);
proxySubject.visit();
}
程式截圖