u013179958
CSDNRGY
2016-03-28 14:45
采纳率: 99.5%
浏览 2.5k
已采纳

简答的来说‘合成复用原则’是什么意思?

 7、合成复用原则(Composite Reuse Principle)

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

谁能举个栗子

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • caozhy
    已采纳

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

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

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

    点赞 评论

相关推荐