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
          主站蜘蛛池模板: 油尖旺区| 淮南市| 宣威市| 平山县| 马关县| 兴海县| 桃源县| 宝兴县| 武功县| 太仆寺旗| 瑞安市| 连城县| 贺州市| 甘孜县| 康乐县| 台南市| 安仁县| 海伦市| 德兴市| 津南区| 紫阳县| 许昌市| 饶河县| 灵璧县| 扶风县| 潍坊市| 湘潭县| 自贡市| 故城县| 饶阳县| 抚州市| 波密县| 靖州| 当阳市| 松潘县| 会理县| 常宁市| 永州市| 安图县| 科技| 潼关县|