2 u013179958 u013179958 于 2016.03.28 22:45 提问

简答的来说‘合成复用原则’是什么意思?
 7、合成复用原则(Composite Reuse Principle)

合成复用原则就是在一个新的对象里通过关联关系(组合关系、聚合关系)来使用一些已有的对象,使之成为新对象的一部分;新对象通过委派调用已有对象的方法达到复用功能的目的。简而言之,尽量使用 组合/聚合 的方式,而不是使用继承。

谁能举个栗子

4个回答

caozhy
caozhy   Ds   Rxr 2016.03.28 23:30
已采纳

设计模式里面到处是这种例子,比如策略模式(Strategy),它在你的主类中聚合了一个策略类,而不同的策咯则是继承策略类。而不是把策略的方法写在主类中,然后直接继承。
再比如Proxy模式,把适配放在Proxy类中,等等。

wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.03.29 06:50
    组合复用本质上是has-a的特征,即有一个什么属性,而继承是is-a是一个什类型。前者更灵活多变,只要有需要可以定义一个其他类型的成员变量,这就是组合的含义。而Java继承只能单继承,还需要写继承体系,而且有些类之间没有表象上的集成关系,就不适合了,例如Person和Address,人拥有一个地址,而人继承地址就牵强了,只能用组合了。
caozhy
caozhy   Ds   Rxr 2016.03.29 06:53

“合成复用原则”的本质还是实现不同关注点的解耦,其实还是“单一职责”的延续。事实上C++是支持“多重继承”的,GoF在编写《设计模式》的时候还没有Java。

CSDNXIAON
CSDNXIAON   2016.03.30 11:29

合成/聚合复用原则
合成/聚合复用原则
合成/聚合复用原则
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!