夢幻之旅

          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
          主站蜘蛛池模板: 林州市| 浠水县| 巨野县| 尼勒克县| 龙胜| 大洼县| 镇坪县| 平乡县| 新丰县| 双柏县| 平湖市| 钦州市| 象州县| 莎车县| 临西县| 马公市| 绥棱县| 玉田县| 黑龙江省| 信丰县| 鄯善县| 彭山县| 仙游县| 上虞市| 牙克石市| 淳化县| 长兴县| 马关县| 峨山| 灌南县| 武隆县| 康平县| 平顶山市| 旬邑县| 门头沟区| 怀来县| 玉田县| 安达市| 永泰县| 白城市| 南昌县|