结构型模式:
组合模式(Composite)
解决对象树结构问题
描述
以统一的方式处理单个对象和组合对象,从而使得客户端能够将它们视为同一个对象来使用。这种方式可以简化系统的设计和实现,同时也能够提高系统的可扩展性。
适用环境
将对象组合成树形结构以表示“整体/部分”层次结构;使得客户端可以使用统一的方式处理单个对象以及对象组合。
优点:
可以将复杂的层次结构变得简单化;客户端程序可以一致地使用单个对象和组合对象,从而降低了系统的复杂度。
缺点:
在增加新的组件时,需要同时修改抽象类和子类,这可能会对系统造成影响;如果组合过于复杂,可能会导致系统难以维护和理解。
违反原则
单一职责原则:由于组合模式将多个对象组合在一起,因此它很容易违反该原则。因为每个组件既可以作为独立的对象存在,也可以作为组合对象的一个部分存在。
代码实现
根据书籍类型漫画、杂志编写一个方法来计算书籍价值,对于不同类型的书籍按照不同的规则进行计算
使用组合模式将每本书籍看作叶子节点将多本书籍组成的集合看作组合节点,通过递归遍历整个书籍树形结构累加每本书籍的价格得到总价值
可以在特殊类型的书籍中实现