/**
* 以下装饰房子举例
*/
public class Demo {
public static void main(String[] args) {
GenericHouse house = new GenericHouse();
Garage garage = new Garage(house);
garage.doSomething();
Kitchen kitchen = new Kitchen(house);
kitchen.doSomething();
}
}
/**
* 抽象构件角色:一个接口,用以规范具体装饰的位置
*/
interface AbstractHouse{
public void doSomething();
}
/**
* 装饰角色: 持有要装饰的对象
*/
class Master implements AbstractHouse{
private AbstractHouse abstractHouse;
public Master(AbstractHouse abstractHouse) {
this.abstractHouse = abstractHouse;
}
public void doSomething() {
System.out.println("装饰角色:装饰角色持有者,在这儿就是房子的主人");
abstractHouse.doSomething();
}
}
/**
* 具体的构件角色:具体需要被装饰的对象
*/
class GenericHouse implements AbstractHouse{
public void doSomething() {
System.out.println("具体构建角色:房子可以住人,遮风挡雨!");
}
}
/**
* 具体装饰角色: 具体的装饰就是在这儿做的,它继承自装饰角色,因为装饰角色持有被装饰对象,
* 所以它也就持有了被装饰对象,可以做装饰
*/
class Garage extends Master{
public Garage(AbstractHouse abstractHouse) {
super(abstractHouse);
}
public void doSomething() {
super.doSomething();
System.out.println("具体装饰角色:在这儿做装饰的事儿,把房子中的一间装饰成车库,所以房子可以存放车子了");
}
}
/**
* 具体装饰角色: 具体的装饰就是在这儿做的,它继承自装饰角色,因为装饰角色持有被装饰对象,
* 所以它也就持有了被装饰对象,可以做装饰
*/
class Kitchen extends Master{
public Kitchen(AbstractHouse abstractHouse) {
super(abstractHouse);
}
public void doSomething() {
super.doSomething();
System.out.println("具体装饰角色:在这儿做装饰的事儿,把房子中的一间装饰成厨房,所以房子可以做饭了");
}
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有