<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 on 2009-10-22 15:30 AK47 閱讀(150) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    <2009年10月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導航

    統計

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产又大又粗又硬又长免费 | 亚洲熟妇无码一区二区三区导航| 亚洲AV永久无码精品一区二区国产 | 久久国产乱子伦精品免费午夜 | 日韩欧毛片免费视频| 两个人看www免费视频| 免费福利在线观看| 亚洲精品乱码久久久久蜜桃| 亚洲精品影院久久久久久| 国产AV无码专区亚洲AVJULIA | 色偷偷尼玛图亚洲综合| 亚洲三级高清免费| 亚洲高清视频免费| 久久91亚洲精品中文字幕| 久久亚洲精品无码观看不卡| 免费v片在线观看| 国产精品成人四虎免费视频| 人禽杂交18禁网站免费| 国产成人福利免费视频| 91福利视频免费| 99在线热视频只有精品免费| 久久精品视频免费播放| 免费网站观看WWW在线观看| 久久免费观看视频| 国产精品美女久久久免费| 国产精品免费αv视频| 亚洲一级片免费看| 男女一边摸一边做爽的免费视频| 男女啪啪免费体验区| 美女视频黄频a免费观看| 婷婷国产偷v国产偷v亚洲| 亚洲1区2区3区精华液| 亚洲youwu永久无码精品| 亚洲av色香蕉一区二区三区 | 日产乱码一卡二卡三免费| 午夜毛片不卡高清免费| 在线免费观看中文字幕| 我想看一级毛片免费的| 日韩高清免费观看| 亚洲高清成人一区二区三区| 精品国产亚洲一区二区在线观看 |