夢幻之旅

          DEBUG - 天道酬勤

             :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            671 隨筆 :: 6 文章 :: 256 評論 :: 0 Trackbacks
          代理模式
              為其它的對象提供一種代理,以控制對這個對象的訪問.
               Proxy代理模式是一種結構型設計模式,主要解決的問題是:在直接訪問對象時帶來的問題,比如說:要訪問的對象在遠程的機器上。在面向對象系統中,有些對象由于某些原因(比如對象創建開銷很大,或者某些操作需要安全控制,或者需要進程外的訪問),直接訪問會給使用者或者系統結構帶來很多麻煩,我們可以在訪問此對象時加上一個對此對象的訪問層。
          代理模式的組成部份:
              1.抽象主題 是一個接口.
              2.具體主題  要實現抽象主題接口
              3.代理主題 要實現抽象主題接口,含有一個主題接口聲明的變量
          各組成部份之間的關系:

          例子:
          1.接口
          package proxy;

          /**
           * <ul>
           * <li>Title:[SellWine]</li>
           * <li>Description: [賣酒接口]</li>
           * <li>Copyright 2009 Upengs Co., Ltd.</li>
           * <li>All right reserved.</li>
           * <li>Created by [Huyvanpull] [2011-8-2]</li>
           * <li>Midified by [modifier] [modified time]</li>
           * </ul>
           * 
          @version 1.0  
           
          */

          public interface SellWine
          {   
              
          public void sell();
          }


          2.實現類
          package proxy;

          /**
           * <ul>
           * <li>Title:[WineFactory]</li>
           * <li>Description: [type of functional description]</li>
           * <li>Copyright 2009 Upengs Co., Ltd.</li>
           * <li>All right reserved.</li>
           * <li>Created by [Huyvanpull] [2011-8-2]</li>
           * <li>Midified by [modifier] [modified time]</li>
           * </ul>
           * 
          @version 1.0  
           
          */

          public class WineFactory implements SellWine
          {

              
          /* (non-Javadoc)
               * @see proxy.SellWine#sell()
               
          */

              
          public void sell()
              
          {
                  System.out.println(
          "wineFactory賣酒.");
              }
             

          }


          3.代理類
          package proxy;

          public class WineFactoryProxy implements SellWine
          {
              
          private WineFactory wineFactory;
              
              
          public WineFactoryProxy()
              
          {
                  wineFactory 
          = new WineFactory();
              }

              
          /* (non-Javadoc)
               * @see proxy.SellWine#sell()
               
          */

              
          public void sell()
              
          {
                  wineFactory.sell();
              }
             

          }


          4.測試類
          package proxy;

          public class Test
          {   
              
          public static void main(String[] args)
              
          {
                  WineFactoryProxy wineFactoryProxy 
          = new WineFactoryProxy();
                  wineFactoryProxy.sell();
              }

          }


          優點:代理模式可以屏比用戶真正請求的對象,使用戶程序和真正對象之間解耦.
          posted on 2011-08-02 15:36 HUIKK 閱讀(268) 評論(0)  編輯  收藏 所屬分類: Design Patterns
          主站蜘蛛池模板: 福海县| 葵青区| 如东县| 华蓥市| 丰顺县| 岫岩| 会理县| 柳林县| 德清县| 武穴市| 桂林市| 云阳县| 惠水县| 天水市| 噶尔县| 仁布县| 郓城县| 双城市| 阿城市| 玉树县| 大英县| 彭泽县| 隆林| 铜川市| 友谊县| 库尔勒市| 江口县| 磐石市| 长沙市| 诏安县| 巴青县| 兴城市| 古田县| 大理市| 青龙| 武威市| 囊谦县| 聂拉木县| 精河县| 托克托县| 永春县|