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

          UML圖如下:

           

          抽象構(gòu)件角色:

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

          package net.blogjava.lzqdiy.decorator;

          public interface IDE
          {
              
          void getFunction();
          }

          具體構(gòu)件角色:
          /*
          *@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("具有了開發(fā)Web應(yīng)用程序的功能!");
              }

          }

          /*
          *@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(
          "具有了開發(fā)圖形用戶界面程序的功能!");
              }


          }

          客戶端代碼:
          /*
          *@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)  編輯  收藏 所屬分類: 設(shè)計模式

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

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(11)

          隨筆分類(48)

          文章分類(29)

          常去逛逛

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 蓝田县| 巨鹿县| 石河子市| 莱芜市| 永宁县| 行唐县| 苍山县| 沭阳县| 临沂市| 聂荣县| 万州区| 德安县| 迁安市| 北流市| 涿鹿县| 秦安县| 仙居县| 泾源县| 蚌埠市| 西盟| 禹州市| 洛隆县| 扎兰屯市| 仙桃市| 武清区| 宣城市| 栖霞市| 秦安县| 南郑县| 南和县| 高清| 正镶白旗| 漳浦县| 新昌县| 象山县| 灌云县| 彰化市| 江油市| 宜阳县| 吉林市| 呼图壁县|