夢幻之旅

          DEBUG - 天道酬勤

             :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            671 隨筆 :: 6 文章 :: 256 評論 :: 0 Trackbacks
          jdk代理:
          1.抽象主題
          package dynamicProxy;

          /**
           * <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 dynamicProxy;

          /**
           * <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 dynamicProxy;

          import java.lang.reflect.InvocationHandler;
          import java.lang.reflect.Method;

          public class DynamicProxy implements InvocationHandler
          {
              
          private Object target;
              
              
          public DynamicProxy(Object realSubject)
              
          {
                  target 
          = realSubject;
              }

              
              
          public Object invoke(Object proxy, Method method, Object[] args)
                      
          throws Throwable
              
          {
                  Object proxyObj 
          = null;
                  
          try
                  
          {
                      System.out.println(
          "執行前");
                      method.invoke(target, args);
                      System.out.println(
          "執行后");
                  }

                  
          catch(Exception ex)
                  
          {
                      ex.printStackTrace();
                  }

                  
          return proxyObj;
              }
             

          }


          4.測試類
          package dynamicProxy;

          import java.lang.reflect.Proxy;

          public class Test
          {
              
          /**
               * 代理模式中的調用
               * 
               * 
          @param args
               
          */

              
          public static void main(String[] args)
              
          {
                  SellWine sellWine 
          = new WineFactory();
                  DynamicProxy dynamicProxy 
          = new DynamicProxy(sellWine);
                  sellWine 
          = (SellWine) Proxy
                          .newProxyInstance(sellWine.getClass().getClassLoader(),
                                  
          new Class[] { SellWine.class }, dynamicProxy);
                  sellWine.sell();
              }

          }


          動態代理能代理不同的接口.
          posted on 2011-08-02 16:12 HUIKK 閱讀(348) 評論(0)  編輯  收藏 所屬分類: Design Patterns
          主站蜘蛛池模板: 荔波县| 望谟县| 北辰区| 苗栗县| 临湘市| 弥勒县| 弥渡县| 垣曲县| 太仆寺旗| 西和县| 克拉玛依市| 弥勒县| 曲水县| 延安市| 昌吉市| 西和县| 廉江市| 额济纳旗| 襄汾县| 澄江县| 沁阳市| 壶关县| 扎囊县| 临邑县| 襄垣县| 绥宁县| 黔西| 沈丘县| 伊宁县| 大冶市| 西昌市| 明星| 汪清县| 青铜峡市| 延津县| 祥云县| 福贡县| 留坝县| 泽库县| 疏勒县| 富顺县|