结构型模式-组合模式

组合模式是一种结构型设计模式,用于处理对象树结构问题,使客户端能以一致方式处理单个对象和组合对象。它适用于表示整体/部分层次结构,并简化了系统的复杂度。模式的优点在于降低了系统的复杂度,但可能因增加新组件而影响原有结构。通过实现统一接口,组合模式实现了对不同类型书籍的灵活组合和价格统计,允许特殊书籍实现定制计算规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

结构型模式:

组合模式(Composite)

解决对象树结构问题

描述

以统一的方式处理单个对象和组合对象,从而使得客户端能够将它们视为同一个对象来使用。这种方式可以简化系统的设计和实现,同时也能够提高系统的可扩展性。

适用环境

将对象组合成树形结构以表示“整体/部分”层次结构;使得客户端可以使用统一的方式处理单个对象以及对象组合。

优点:

可以将复杂的层次结构变得简单化;客户端程序可以一致地使用单个对象和组合对象,从而降低了系统的复杂度。

缺点:

在增加新的组件时,需要同时修改抽象类和子类,这可能会对系统造成影响;如果组合过于复杂,可能会导致系统难以维护和理解。

违反原则

单一职责原则:由于组合模式将多个对象组合在一起,因此它很容易违反该原则。因为每个组件既可以作为独立的对象存在,也可以作为组合对象的一个部分存在。

代码实现

根据书籍类型漫画、杂志编写一个方法来计算书籍价值,对于不同类型的书籍按照不同的规则进行计算
使用组合模式将每本书籍看作叶子节点将多本书籍组成的集合看作组合节点,通过递归遍历整个书籍树形结构累加每本书籍的价格得到总价值
可以在特殊类型的书籍中实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

格林希尔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值