<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    設計模式之代理模式(轉)

     

    原帖地址 : http://blog.csdn.net/wdwgr/archive/2009/04/09/4060739.aspx

     

    一. 代理模式:

    代理模式就是給某一個對象提供一個代理對象,并由代理對象控制對源對象的引用。就是一個人或者一個機構代替另一個人或者另一個機構去采取一些行動。

     

    二. 代理模式所涉及到的角色:

    抽象角色:提供一種真實角色和代理角色所共有的接口

    真實角色:定義了代理角色要代理的真實對象

    代理角色:含有對真實角色的引用,通常在客戶端調用時代理對象都要在真實角色對象的基礎上增加一些真實角色所不能勝任的工作,而不只是簡單的含有真實角色的引用

     

    三. 舉例:

    跟MM在網上聊天,一開頭通常總是“hi”,“你好”, “你從哪里來?”, “你多大了”,等等這些話,真煩人,寫個程序為我做代理吧,凡是收到這些消息,都設置好了自動回復功能,接收到其他有價值的消息時在通知我回答,怎么樣,很酷吧,這都要歸功于這個代理類。

     

    代碼:

     

       1. /**
       2.  * 抽象角色,提供代理類和具體類的公共接口
       3.  * @author Administrator
       4.  *
       5.  */ 
       6. public interface Chat { 
       7.  
       8.     public void reply(String message); 
       9. } 
      10. /**
      11.  * 具體角色類,被代理的類
      12.  * @author Administrator
      13.  *
      14.  */ 
      15. public class MyChat implements Chat{ 
      16.  
      17.     public void reply(String message) { 
      18.      
      19.         System.out.println("需要我親自回復的內容。。。"); 
      20.     } 
      21. } 
      22. /**
      23.  * 代理類,持有被代理類的一個引用
      24.  * @author Administrator
      25.  *
      26.  */ 
      27. public class ChatProxy implements Chat{ 
      28.  
      29.     private MyChat mc = new MyChat(); 
      30.      
      31.     public void reply(String message) { 
      32.      
      33.         if(message.equals("hi,你好")) { 
      34.             System.out.println("hi, 你也好"); 
      35.         }else if(message.equals("你從哪里來?")){ 
      36.             System.out.println("我來自中國。。。"); 
      37.         }else if(message.equals("你多大了?")) { 
      38.             System.out.println("我今年22了。。。"); 
      39.         } 
      40.         else { 
      41.             mc.reply(message); 
      42.         } 
      43.     } 
      44. } 

     客戶端直接對代理類進行調用:

       1. public class ProxyTest { 
       2.  
       3.     public static void main(String[] args) { 
       4.         //直接調用代理類 
       5.         ChatProxy cp = new ChatProxy(); 
       6.          
       7.                 //代理類提供的實現 
       8.         cp.reply("hi,你好"); 
       9.                 //具體類提供的實現 
      10.         cp.reply("你喜歡我嗎?"); 
      11.     } 
      12. } 

    四. 總結:

    在某些情況下,客戶不想或者不能直接引用一個對象,這個時候就用到了代理類,代理對象可以再客戶和目標對象之間起到中介的作用,客戶端分辨不出代理對象與真實對象的區別,代理模式可以不知道真正的代理對象,而僅僅持有一個被代理對象的接口,這時候代理對象不能夠創建被代理對象,被代理對象必須有系統的其他角色代為創建并傳入。

    繼續努力,加油!

    posted @ 2009-10-22 15:30 AK47 閱讀(150) | 評論 (0)編輯 收藏

    僅列出標題
    共4頁: 上一頁 1 2 3 4 
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導航

    統計

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 久久成人无码国产免费播放| j8又粗又长又硬又爽免费视频| 无码日韩精品一区二区免费暖暖| 国产91精品一区二区麻豆亚洲| www亚洲精品久久久乳| 在线免费视频一区| 亚洲最大无码中文字幕| 久久不见久久见中文字幕免费| 国产91在线|亚洲| 国产在线观看免费观看不卡| 亚洲成年人电影网站| 久久福利资源网站免费看| 亚洲第一成年网站大全亚洲| 国产精品色拉拉免费看| 亚洲日本va午夜中文字幕一区| 久久免费观看国产精品88av| 亚洲精品免费观看| 免费精品国产自产拍在| 国产 亚洲 中文在线 字幕| 四虎成人免费网址在线| 无套内谢孕妇毛片免费看看| 亚洲综合亚洲综合网成人| 四虎国产精品免费永久在线| 内射少妇36P亚洲区| 在线视频免费观看爽爽爽| 亚洲熟妇无码AV| 亚洲国产av一区二区三区| 91成人免费观看在线观看| 亚洲国产人成在线观看69网站| 中国xxxxx高清免费看视频| 亚洲日韩精品无码专区加勒比☆ | 在线免费观看国产视频| 日韩毛片一区视频免费| 亚洲va久久久噜噜噜久久天堂| 亚洲电影在线免费观看| 色综合久久精品亚洲国产| 在线观看亚洲成人| 24小时在线免费视频| 亚洲AV无码专区国产乱码不卡| 相泽亚洲一区中文字幕| 在线观看免费av网站|