装饰器模式允许向一个现有的对象添加新的功能,同时又不改变其结构。装饰器模式也是属于结构型模式。

    装饰器模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整的前提下,提供了额外的功能。

    动态地给一个对象添加一些额外的指责,新增加一些功能,比生成子类又更为灵活。

    使用的场景一般是扩展一个类的功能或者是动态的增加功能/动态的撤销。基本上可以代替继承。

    

    现在举一个例子:我们首先创建一个Shape的接口以及对这个接口进行圆形和长方形的实现。之后创建一个实现了Shape接口的抽象装饰类ShapeDecorator,并把Shape对象作为它的实例变量。

    RedShapeDecorator是实现的具体类。关于设计模式的讨论(2)——装饰器模式(Decorator)

    关键代码放入的是:


    public abstract class ShapeDecorator implements Shape{

    protected Shape decoratedShape;

    public ShapeDecorator(Shape decoratedShape){

    this.decoratedShape = decoratedShape;

    }

    public void draw(){

        decoratedShape.draw();

       }

   }

   之后再对ShapeDecorator进行实现,可以加入新的功能。对于ShapeDecorator这个类来说,里面就是实现了一个初始的Shape,但是我们可以接着对他进行继承重写,增添新的功能。main函数里创建新对象也是创建继承之后的对象。


相关文章:

  • 2022-12-23
  • 2021-06-27
  • 2022-01-17
  • 2021-05-14
  • 2021-12-19
  • 2021-11-28
猜你喜欢
  • 2022-02-11
  • 2021-07-14
  • 2021-07-11
  • 2021-06-29
  • 2021-08-25
  • 2021-05-04
  • 2021-04-14
相关资源
相似解决方案