Open DevinLei opened 5 years ago
https://devinlei.github.io/designpattern/2019/05/30/decorator.html
什么是装饰模式?
装饰模式(Decorator),动态的给一个对象增加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活。
一般而言,当系统需要实现新功能时候,我们会向旧的类中添加新的代码以扩展其功能。我们将这种行为称为对主类的装饰,但这种做法的问题在于,在主类中增加了属性和方法,从而增加了主类的复杂度。而且增加的这部分属性只是为了满足一些特定的场景下的特殊需求。而装饰模式就很好的解决了这些问题,通过将装饰的功能放在单独的类中,并让这个类包装它要装饰的对象,因此,当客户需要新的功能时,就能在客户代码中有序的选择调用装饰对象。
由此可见,装饰模式的优点就在于将类的核心职责和装饰功能区分,简化了原有的类。
装饰模式类结构图
https://devinlei.github.io/designpattern/2019/05/30/decorator.html
什么是装饰模式?
装饰模式(Decorator),动态的给一个对象增加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活。
一般而言,当系统需要实现新功能时候,我们会向旧的类中添加新的代码以扩展其功能。我们将这种行为称为对主类的装饰,但这种做法的问题在于,在主类中增加了属性和方法,从而增加了主类的复杂度。而且增加的这部分属性只是为了满足一些特定的场景下的特殊需求。而装饰模式就很好的解决了这些问题,通过将装饰的功能放在单独的类中,并让这个类包装它要装饰的对象,因此,当客户需要新的功能时,就能在客户代码中有序的选择调用装饰对象。
由此可见,装饰模式的优点就在于将类的核心职责和装饰功能区分,简化了原有的类。
装饰模式类结构图