定义:动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类更灵活
代码实现:
(1)抽象构建类
public interface Transform{
public void move();
}
(2)具体构建类
public final class Car implememts Transform{
public Car{
System.out.println("变形金刚是一辆车");
}
public void move(){
System.out.println("在陆地上行走!");
}
}
(3)抽象装饰类
public class Changer implements Transform{
private Transform transform;
public Changer(Transform transform){
this.transform=transform;
}
public void move(){
transform.move();
}
}
(4)具体装饰类
public class Robot extends Changer{
public Robot(Transform transform){
super(transformq);
System.out.println("变成机器人!");
}
//新增的方法,起到“装饰”作用
pubLic void say(){
System.out.println("说话!");
}
}
(5)客户端代码
public class client {
public static void main(String []args)
{
Transform camaro;
camaro=new Car();
camaro.move;
Robot bumblebee=new Robot(camaro);
bumblebee.move();
bumblebee.say();
}