您的位置:首页 > 其它

装饰模式(Decorator)-山下的石雕厂

2015-12-02 20:02 393 查看
装饰模式:是对一个类进行各种功能的丰富,使用Decorator模式扩充类的功能会比用子类生成的方式更加的灵活。

装饰者与被装饰者拥有共同的超类。

类图:



我家有座山,山下有座石雕厂,石雕厂有打磨石狮子的机器

抽象构建角色(被装饰者):石雕厂Carved类

具体构建角色(被装饰者的初始状态):雕刻石狮子LionCarved

装饰角色(持有构件的实例):机器 Machine

装饰类:CarvedHead CarvedBody CarvedTail

Carved类

package decorator2;

public abstract class Carved {

public abstract String toCarved();

}


LionCarved类

package decorator2;

public class LionCarved extends Carved{

public String toCarved(){
return "开始雕刻石狮子";
}
}


Machine类

package decorator2;

public abstract class Machine extends Carved{

}


CarvedHead类

package decorator2;

public class CarvedHead extends Machine{

Carved carved;

public CarvedHead(Carved carved){
this.carved = carved;
}

public String toCarved(){
return "先要雕刻头部";
}

}


CarvedBody类

public class CarvedBody extends Machine{

Carved carved;

public CarvedBody(Carved carved) {
this.carved = carved;
}

public String toCarved(){
return "然后雕刻身体";
}
}


CarvedTail类

package decorator2;

public class CarvedTail extends Carved{

Carved carved;

public CarvedTail(Carved carved){
this.carved = carved;
}

public String toCarved(){
return "最后雕刻尾巴";
}
}


测试Test类
package decorator2;

public class Test {

public static void main(String args[]){
Carved carved = new LionCarved();
System.out.println(carved.toCarved());
CarvedHead carvedHead = new CarvedHead(carved);
System.out.println(carvedHead.toCarved());
CarvedBody carvedBody = new CarvedBody(carved);
System.out.println(carvedBody.toCarved());
CarvedTail carvedTail = new CarvedTail(carved);
System.out.println(carvedTail.toCarved());
}
}


运行结果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: