設計模式-代理模式
介紹
代理模式是結構性模式,它通過引入一個新的物件(如小圖片和遠端代理物件)來實現對真實物件的操作或者將新的物件作為真實物件的一個替身。
我們現實生活中也有許多代理模式的影子。例如朋友出國旅遊,我們可以託朋友幫忙買些東西。或者,我們點外賣,配送員替我們去取餐等等。
結構圖
一共有三個角色
- Subject(抽象主題角色)
- Proxy(代理主題角色)
- RealSubject(真實主題角色)
時序圖
案例
這邊的配送員就是代理角色,顧客是真實角色,配送員完成顧客到店取貨的步驟。
抽象主題角色
public abstract class Subject {
public abstract void getFood();
}
顧客
public class Customer extends Subject {
@Override
public void getFood() {
System.out.println("客戶拿到餐啦!");
}
}
配送員
public class DeliveryMan extends Subject {
private Customer customer = new Customer();
public void goShop(){
System.out.println("去商家取餐!");
}
@Override
public void getFood() {
goShop();
customer.getFood();
finish();
}
public void finish() {
System.out.println("結束送餐!");
}
}
測試
public class Client {
public static void main(String[] args) {
Subject subject = new DeliveryMan();
subject.getFood();
}
}
測試結果
總結
上面的案例只是簡單的代理模式,實際開發中要複雜許多。
而且代理有還許多種,例如遠端代理(Remote Proxy)、 虛擬代理(Virtual Proxy)等等。
還有一種較為高階的代理模式叫做動態代理,Spring AOP就是採用動態代理模式。有興趣的可以
相關文章
- 設計模式----代理模式設計模式
- 設計模式~代理模式設計模式
- 【設計模式】代理模式設計模式
- 設計模式——代理模式設計模式
- js設計模式--代理模式JS設計模式
- Java設計模式—代理模式Java設計模式
- 設計模式之代理模式設計模式
- Java設計模式-代理模式Java設計模式
- 《設計模式》之代理模式設計模式
- PHP設計模式-代理模式PHP設計模式
- 設計模式 #5 (策略模式、代理模式)設計模式
- 代理設計模式設計模式
- Javascript設計模式之代理模式JavaScript設計模式
- Javascript設計模式(五)代理模式JavaScript設計模式
- JS設計模式四:代理模式JS設計模式
- Java 設計模式(四)《代理模式》Java設計模式
- Java設計模式之代理模式Java設計模式
- 設計模式學習——代理模式設計模式
- 設計模式 - 代理模式詳解設計模式
- 設計模式——代理模式的思考設計模式
- 軟體設計模式————(代理模式)設計模式
- 設計模式:代理模式詳解設計模式
- 極簡設計模式-代理模式設計模式
- 設計模式--介面卡模式/代理模式設計模式
- C++設計模式之Proxy模式(代理模式)C++設計模式
- 簡說設計模式——代理模式(續)設計模式
- 設計模式之代理模式(proxy pattern)設計模式
- 設計模式漫談之代理模式設計模式
- C++設計模式之代理模式C++設計模式
- Java設計模式之(五)——代理模式Java設計模式
- 搞懂設計模式——代理模式 + 原理分析設計模式
- 23種設計模式(四)-代理模式設計模式
- 23天設計模式之代理模式設計模式
- 設計模式之代理設計模式
- 23種設計模式之代理模式(靜態代理)設計模式
- 【設計模式】-代理模式及動態代理詳解設計模式
- 設計模式(七)Android中的代理模式設計模式Android
- 每天一個設計模式·代理模式設計模式