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 閱讀(145) 評論(0)  編輯  收藏 所屬分類: java
          主站蜘蛛池模板: 平谷区| 海兴县| 凯里市| 龙川县| 句容市| 台山市| 阜平县| 丰县| 延庆县| 交城县| 曲周县| 贡山| 武穴市| 南昌县| 岫岩| 黄陵县| 清远市| 阜南县| 庆安县| 吕梁市| 高要市| 富裕县| 会东县| 文安县| 横峰县| 壤塘县| 龙胜| 灵璧县| 虞城县| 阳西县| 玉林市| 巫山县| 花莲市| 沁源县| 河西区| 江孜县| 安顺市| 吴川市| 淮安市| 阿克苏市| 贡嘎县|