夢幻之旅

          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 閱讀(350) 評論(0)  編輯  收藏 所屬分類: Design Patterns
          主站蜘蛛池模板: 顺平县| 乌拉特后旗| 文成县| 阆中市| 益阳市| 顺昌县| 文山县| 漾濞| 连云港市| 海兴县| 庆安县| 虹口区| 茶陵县| 乐安县| 临海市| 东宁县| 潞城市| 新宾| 龙胜| 汉川市| 新乡县| 霍林郭勒市| 曲阜市| 济阳县| 化隆| 册亨县| 双鸭山市| 浦县| 将乐县| 都兰县| 涟水县| 信阳市| 漾濞| 文成县| 沅陵县| 封开县| 资阳市| 县级市| 黄平县| 临澧县| 合江县|