设计模式那些事儿-装饰者模式

上次学习了单例模式,这次也把装饰者模式跟大家分享下吧~

装饰者模式能做什么? 它可以动态的将行为以及责任附加到对象上,要扩展功能,优先考虑装饰者模式,其次才是继承

每个模式都有其应用的场景,那么装饰者模式适合于什么样的场景呢?你是否想过自己写的功能上线之后运行正常,且收到用户良好的评价。就在这时,用户又想加入新的功能,这新的功能会迫使你改原来功能的代码,而这其中的风险是巨大的,你会怎么办?你会想到当初的设计是不是符合这种可扩展的功能呢?

有一句话这样说,好的设计可以让你编码的时间喝咖啡,糟糕的设计可以让你喝咖啡的时间也在编码。

设计的过程中,我们要考虑到哪些功能是最有可能变化的,把它拿出来,运用OO的设计原则:开闭原则(对扩展开放、对修改关闭)。

我们来分析下它的UML图:

设计模式那些事儿-装饰者模式_第1张图片

组件可以单独使用也可以被装饰者装饰起来,装饰者都包装一个组件,装饰者是具体装饰者要实现的接口或者是一个抽象类。

其实在java I/O设计中也存在装饰者模式:

设计模式那些事儿-装饰者模式_第2张图片

在实际实现的过程中,装饰者模式会导致设计中出现许多小对象,如果过渡使用,会让程序变得复杂,后来人维护可能会遇到困难。但是这并不能阻碍装饰者模式的发展,当它与factory模式以及builder模式联合起来时,将可见其强大性,后续我们继续探讨~

 

你可能感兴趣的:(Decorator,装饰者模式,开闭原则)