在软件组件的设计中,如果责任划分的不清晰,使用继承得到的结果往往随着需求的变化而变化,子类急剧膨胀,同事充斥着重复代码,这时候的关键是划清责任。
典型模式有:Decorator、Bridge
在某些情况下我们可能会“过渡地使用继承来扩展对象的功能”,由于继承为类型引入的静态性质,使得这种扩展方式缺乏灵活性;并且随着子类的增多(扩展功能的增多),各种子类的组合(扩展功能的组合)会导致更多子类的膨胀。
如何使“对象功能的扩展”能够根据需要来动态地实现?同时避免“扩展功能的增多”带来的子类膨胀问题?从而使得任何“功能扩展变化”所导致的影响降为最低?
动态(组合)地给一个对象增加一些额外的职责。就增加功能而言,Decorator模式比生成子类(继承)更为灵活(消除重复代码&减少子类个数)。
——《设计模式》GoF
上一篇:计算机组成原理|第三章(笔记)
下一篇:【2223sW3】LOG1