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
          主站蜘蛛池模板: 曲麻莱县| 林州市| 库尔勒市| 营山县| 南充市| 正蓝旗| 香格里拉县| 体育| 玉树县| 镇雄县| 黄龙县| 昌图县| 安国市| 友谊县| 庄河市| 余姚市| 宣化县| 无极县| 天气| 宁晋县| 临洮县| 方城县| 闵行区| 新竹市| 夹江县| 孟津县| 西贡区| 江口县| 靖西县| 海门市| 满城县| 昌邑市| 裕民县| 绥滨县| 北碚区| 庄浪县| 青铜峡市| 江安县| 申扎县| 前郭尔| 历史|