設計模式之-代理模式
一、什麼是代理模式
代理模式: 為其他物件提供一種代理以控制對這個物件的訪問 。簡單來說這就是給目標物件生成一個代理物件,並由代理物件控制對目標物件的引用。
我們來看下裝飾者模式的UML圖:
二、代理模式的構成
-
Subject(抽象主題角色 ):它聲明瞭真實主題和代理主題的共同介面;
-
Proxy(代理主題角色) :實現了抽象主題,它擁有對真實主題的引用,這樣它就可以操作真實的主題物件;
-
RealSubject(真實主題角色) :實現了抽象主題,裡面實現了具體的業務操作;
三、例項演示
我們來寫一個簡單的Demo,我們就以代購化妝品為例寫一個例子。
建立一個化妝品的介面
public interface Cosmetics { void BuyCosmetics(); }複製程式碼
建立一個真實的主題
public class Me implements Cosmetics{ @Override public void BuyCosmetics() { System.out.println("我想買韓國的韓妝品,但是我沒法出國怎麼辦?"); } }複製程式碼
代理主題角色
public class Proxy implements Cosmetics { private Me me; @Override public void BuyCosmetics() { if (me == null) { me = new Me(); } me.BuyCosmetics(); // 代理增強的方法 proxys(); } public void proxys() { System.out.println("我去幫你買吧!"); } }複製程式碼
來寫一下測試類
public class Test { public static void main(String[] args) { Proxy proxy = new Proxy(); proxy.BuyCosmetics(); } }複製程式碼
結果
四、模式總結
通過上面的介紹我們對代理模式有了一個簡單的瞭解,那麼你可能享問代理模式有哪些實際的應用呢?其實我們每天使用電腦就無時無地的在使用代理模式,我們有很多的電腦應用,問了更方便快捷的開啟應用,一般都會發送一個快捷方式到桌面,那麼這個快捷方式就是一個典型的代理模式。
那麼你還知道其他典型的代理模式嘛?