“君子和而不同,小人同而不和”,趣谈继承与组合

设计模式里有一个“合成/聚合复用原则(CARP)”,尽量使用合成/聚合(Has-A),尽量不要使用类继承(Is-A),即合成/聚合优于集成。

 

集成,我若要有你的功能,我必须是一个你。

合成/聚合,我可以承担你的职责,但我还是我。

 

看到这句话,突然想起古语论君子与小人,“君子和而不同,小人同而不和”。

和,责任与行为;同,外在表现与类族。

 

继承是一家独断;合成/聚合是百花齐放。

继承是祖国山河一片红,人人唱红歌;合成/聚合是个性张扬,但同有一个中国心。

 

继承,应对变化的方式是表象一致,人手一块红布(不管手里的红布与别人一样还是不一样!)。

合成/聚合,红心在我心,心映红布(相同的红布总是只有一块;但每个人中意的红布自己选)。

 

就为了达成某个相同目标而言,继承与“合成/聚合”的主要区别在于,

继承要求我必须是你,要有红心必须有红布。

合成/聚合只要求有红心,红布可共用别人的红布

 

(类比比较,有点类似于C语言中的传值与传址——“完全拷贝一份”vs“只拷贝地址”)

 

你是需要人人都披红?还是需要人人有红心?

你喜欢君子?还是喜欢小人?

转载于:https://www.cnblogs.com/gonegone/archive/2011/09/18/2180410.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值