装饰者模式

装饰者模式

  1. 设计原因
    1. 动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。该模式以对客 户端透明的方式扩展对象的功能。
    2. 适用环境
      1. 在不影响其他对象的情况下,以动态,透明的方式给单个对象添加职责
      2. 处理那些可以撤销的职责
      3. 当不能采用生成子类的方法进行扩充时。一种情况是,可能有大量独立的扩展,为支持每一种组合将产生大量的 子类,使得子类数目呈爆炸性增长。另一种情况可能是因为类定义被隐藏,或类定义不能用于生成子类。
    3. 参与者
      1. Component(被装饰的对象基类)
        定义一个对象接口,可以给这些对象动态地添加职责。
      2. ConcreteComponent(具体被装饰对象)
      3. Decorator(装饰者抽象类)
      4. ConcreteDecorator(具体装饰者)
        代码
class Car{
    private String name;
    public Car(String name){
        this.name = name;
    }
    public void show(){
        System.out.println("车名"+name);
    }
}
//    包装类
class BenciCar {
    protected Car car;
//在原有的基础上添加功能      
    public BenciCar(Car car) {
        this.car = car;
    }

    public void run() {
        System.out.println("Running");
    }

    public void show() {
        run();
        car.show();
        System.out.println("升级的");
    }

}
public class DeractorTest {
    public static void main(String[] args) {
          BenciCar benciCar = new BenciCar(new Car("奔驰"));
          benciCar.show();
    }
}

发表评论