装饰器模式(结构型)

装饰器模式
装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。

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

使用场景:

  • 扩展一个类的功能。
  • 动态增加功能,动态撤销。

优点:

装饰类和被装饰类可以独立发展,不会相互耦合,装饰模式是继承的一个替代模式,装饰模式可以动态扩展一个实现类的功能。

缺点:

多层装饰比较复杂。

实现上:

装饰器类是一个实现了接口的抽象类,构造方法的入参是该接口,接口的实现方法是调用接口的方法。抽象类的子类,会接收一个接口的实现类,然后重写方法时,除了还会调用接口的方法外,可以做一些扩展,达到了对原方法的增强。抽象类的方法还是调用接口的方法,而抽象类的子类就是负责进行增强。

注意:

  • 代理模式,侧重于不能直接访问一个对象,只能通过代理来间接访问。
  • 装饰器模式,是因为没法在编译器就确定一个对象的功能,需要运行时动态的给对象添加职责,所以只能把对象的功能拆成一个个的小部分,动态组装。代理模式在编译器其实就已经确定了和代理对象的关系。
  • 他们是为了解决不同的问题而抽象总结出来的,可以混用。

你可能感兴趣的:(装饰器模式(结构型))