代理模式(Proxy)
模式定義
給某一個對象提供一個代理,並由代理對象控制對原對象的引用。
類圖
參與者
Subject:抽象主題角色
聲明瞭真實主題和代理主題的共同接口,這樣一來在任何使用真實主題的地方都可以使用代理主題
Proxy:代理主題角色
定義了代理角色所代表的真實對象
RealSubject:真實主題角色
代理主題角色內部含有對真實主題的引用,從而可以在任何時候操作真實主題對象;代理主題角色提供一個與真實主題角色相同的接口,以便可以在任何時候都可以替代真實主題;控制真實主題的應用,負責在需要的時候創建真實主題對象(和刪除真實主題對象)
例子
* 靜態代理 設計模式
* 1.真實角色
* 2.代理角色:持有真實角色的引用
* 3.二者要實現相同的接口
舉這樣一個例子,買房的客戶以及房屋中介
客戶即真實角色,中介即代理角色,你把要求告訴房屋中介,然後中介幫你挑,最後買房子的還是你
先創建一個購買的接口
interface BuyHouse{
public abstract void Buying();
}
//然後是真實角色實現接口中的方法
class consumer implements BuyHouse{
public void Buying(){
System.out.println("你準備買房子");
}
}
以及代理角色
class agent implements BuyHouse{
private BuyHouse you;
//帶參構造
public agent(BuyHouse you){
this.you=you;
}
public void Buying(){
you.Buying();
}
}
在main函數裏面創建真實角色、代理角色並傳參,執行任務
public class StaticForxy {
public static void main(String[] args) {
BuyHouse con = new consumer();
agent ag = new agent(con);
ag.Buying();
}
}
可參考https://blog.csdn.net/qq_36986067/article/details/81229669