1. 程式人生 > >設計模式之-代理模式

設計模式之-代理模式

一、什麼是代理模式

代理模式:為其他物件提供一種代理以控制對這個物件的訪問。簡單來說這就是給目標物件生成一個代理物件,並由代理物件控制對目標物件的引用。


我們來看下裝飾者模式的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();
   }
}複製程式碼


結果



四、模式總結

通過上面的介紹我們對代理模式有了一個簡單的瞭解,那麼你可能享問代理模式有哪些實際的應用呢?其實我們每天使用電腦就無時無地的在使用代理模式,我們有很多的電腦應用,問了更方便快捷的開啟應用,一般都會發送一個快捷方式到桌面,那麼這個快捷方式就是一個典型的代理模式。


那麼你還知道其他典型的代理模式嘛?