通過裝飾(decorator)模式詮釋Eclipse的插件擴展機制

          UML圖如下:

           

          抽象構件角色:

          /*
          *@author 我為J狂 建立日期 2007-4-21
          *
          */

          package net.blogjava.lzqdiy.decorator;

          public interface IDE
          {
              
          void getFunction();
          }

          具體構件角色:
          /*
          *@author 我為J狂 建立日期 2007-4-21
          *
          */

          package net.blogjava.lzqdiy.decorator;

          public class Eclipse implements IDE
          {

              
          public Eclipse()
              
          {
                  
              }

              
          public void getFunction()
              
          {
                   
              }


          }

          裝飾角色:
          /*
          *@author 我為J狂 建立日期 2007-4-21
          *
          */

          package net.blogjava.lzqdiy.decorator;

          public class PlugIn implements IDE
          {

              
          private IDE ide;
              
          public PlugIn(IDE ide)
              
          {
                  
          super();
                  
          this.ide=ide;
              }


              
          public void getFunction()
              
          {
                  ide.getFunction();
              }


          }

          具體裝飾角色:

          /*
          *@author 我為J狂 建立日期 2007-4-21
          *
          */

          package net.blogjava.lzqdiy.decorator;

          public class WTP extends PlugIn
          {

              
          public WTP(IDE ide)
              
          {
                  
          super(ide);
              }

              
          public void getFunction()
              
          {
                  
          // TODO Auto-generated method stub
                  System.out.println("具有了開發Web應用程序的功能!");
              }

          }

          /*
          *@author 我為J狂 建立日期 2007-4-21
          *
          */

          package net.blogjava.lzqdiy.decorator;

          public class VE extends PlugIn
          {
              
          public VE(IDE ide)
              
          {
                  
          super(ide);
              }

              
          public void getFunction()
              
          {
                  System.out.println(
          "具有了開發圖形用戶界面程序的功能!");
              }


          }

          客戶端代碼:
          /*
          *@author 我為J狂 建立日期 2007-4-21
          *
          */

          package net.blogjava.lzqdiy.decorator;

          public class Client
          {

              
          /**
               * 
          @param args
               
          */

              
          public static void main(String[] args)
              
          {
                  IDE eclipse
          =new Eclipse();
                  IDE eclipseWithWTP
          =new WTP(eclipse);//得到安裝了WTP插件的Eclipse
                  eclipseWithWTP.getFunction();
                  IDE eclipseWithWTPandVE
          =new VE(eclipseWithWTP);//得到安裝了WTP和VE插件的Eclipse
                  eclipseWithWTPandVE.getFunction();
              }


          }



          posted on 2007-04-21 15:21 我為J狂 閱讀(1405) 評論(0)  編輯  收藏 所屬分類: 設計模式

          <2007年4月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導航

          統計

          常用鏈接

          留言簿(11)

          隨筆分類(48)

          文章分類(29)

          常去逛逛

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 尤溪县| 鹤壁市| 章丘市| 揭西县| 奉化市| 凤凰县| 炉霍县| 凯里市| 城步| 黄陵县| 贡觉县| 巴塘县| 南阳市| 蓬莱市| 门源| 南川市| 郎溪县| 驻马店市| 海门市| 马公市| 莆田市| 道孚县| 高碑店市| 波密县| 土默特右旗| 当涂县| 白河县| 新竹县| 朝阳县| 宁国市| 长乐市| 永新县| 运城市| 平泉县| 清水河县| 公主岭市| 穆棱市| 广平县| 县级市| 宜城市| 卢湾区|