通过装饰(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狂 阅读(1391) 评论(0)  编辑  收藏 所属分类: 设计模式


只有注册用户登录后才能发表评论。


网站导航:
 
<2007年4月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

导航

统计

常用链接

留言簿(11)

随笔分类(48)

文章分类(29)

常去逛逛

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜