装饰模式就是动态的增加责任,示例代码:
package com.djk.design.struct.decor;
public interface Food
{
void description();
}
package com.djk.design.struct.decor;
public class Cake implements Food
{
private Food food;
public Cake(Food food) {
super();
this.food = food;
}
@Override
public void description()
{
if (null != food)
{
food.description();
}
System.out.println("蛋糕");
}
}
package com.djk.design.struct.decor;
public class ChocolateCake implements Food
{
private Food food;
public ChocolateCake(Food food) {
super();
this.food = food;
}
@Override
public void description()
{
if (null != food)
{
food.description();
}
System.out.println("巧克力味");
}
}
package com.djk.design.struct.decor;
public class ZhiShiCake implements Food
{
private Food food;
public ZhiShiCake(Food food) {
super();
this.food = food;
}
@Override
public void description()
{
if (null != food)
{
food.description();
}
System.out.println("芝士");
}
}
package com.djk.design.struct.decor;
public class Client
{
public static void main(String[] args)
{
Food food = new Cake(new ChocolateCake(new ZhiShiCake(null)));
food.description();
}
}