wangflood

          精心維護一個技術blog,為了工作,也是愛好。

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            14 Posts :: 19 Stories :: 8 Comments :: 0 Trackbacks
          在框架里,看到一段動態代理的混亂設計。可能后期會改的。中午要睡了,先貼出來,以后有時間再分析更改注釋.

          public interface Bird {

              
          public void fly();
              
          public void song();
          }

          public class TinyBird implements Bird {

              
          private static final TinyBird instance = new TinyBird();

              
          static final TinyBird getDefault() {
                  
          return instance;
              }

              @Override
              
          public void fly() {
                  System.out.println(
          "bird flying .");

              }

              @Override
              
          public void song() {
                  System.out.println(
          "bird songing .");

              }

          }


          public class BirdHandler implements InvocationHandler {

              
          private Object deledate;

              
          public BirdHandler(TinyBird deledate) {
                  
          this.deledate = deledate;
              }

              @Override
              
          public Object invoke(Object proxy, Method method, Object[] args)
                      
          throws Throwable {
                  doBefore();
                  Object result 
          = method.invoke(deledate, args);
                  doAfter();
                  
          return result;
              }

              
          private void doBefore() {
                  System.out.println(
          "before.");
              }

              
          private void doAfter() {
                  System.out.println(
          "after.");
              }
          }



          public class Factory {

              
          private static Bird instance = newInstance(TinyBird.getDefault());

              
          public static Bird getDefaultSettings() {
                  
          return instance;
              }

              
          public static Bird newSettings() {
                  
          return newInstance(new TinyBird());
              }

              
          private static Bird newInstance(TinyBird real) {
                  Class
          <?> c = TinyBird.class;
                  
          return (Bird) Proxy.newProxyInstance(c.getClassLoader(),
                          c.getInterfaces(), 
          new BirdHandler(real));
              }

          }


          Factory.getDefaultSettings()和Factory.newSettings()為什么要同時出現。。。。。。。



          posted on 2011-03-30 12:48 wangflood 閱讀(151) 評論(0)  編輯  收藏 所屬分類: java
          主站蜘蛛池模板: 隆德县| 抚顺市| 鹿邑县| 临猗县| 松阳县| 江油市| 溧水县| 马龙县| 皮山县| 长海县| 绥宁县| 岳池县| 昭通市| 图木舒克市| 长垣县| 莒南县| 会东县| 南宁市| 浏阳市| 剑阁县| 普陀区| 饶阳县| 文成县| 平乡县| 青龙| 湘乡市| 翁牛特旗| 灵武市| 信宜市| 磴口县| 康乐县| 金湖县| 永寿县| 友谊县| 商水县| 平乐县| 屯昌县| 黎平县| 甘泉县| 延长县| 贵州省|