大师与门徒……

大师:我说蚱蜢呀!距离我们上次见面已经有些时日,你对于继承
的冥想,可有精进?
门徒:是的,大师。尽管继承威力强大,但是我体会到它并不总是能够实现
最有弹性和最好维护的设计。
大师:啊!是的,看来你已经有所长进。那么,告诉我,我的门徒,不通过继承
又能如何达到复用呢?
门徒:大师,我已经了解到利用组合(composition)和委托(delegation)可以在
运行时具有继承行为的效果。
大师:好,好,继续……
门徒:利用继承设计子类的行为,是在编译时静态决定的,而且所有的子类都会
继承到相同的行为。然而,如果能够利用组合的做法扩展对象的行为,就可以在
运行时动态地进行扩展。
大师:很好,蚱蜢,你已经开始看到组合的威力了。
门徒:是的,我可以利用此技巧把多个新职责,甚至是设计超类时还没有想到的
职责加在对象上。而且,可以不用修改原来的代码。
大师:利用组合维护代码,你认为效果如何?
门徒:这正是我要说的。通过动态地组合对象,可以写新的代码添加新功能,而
无须修改现有代码。既然没有改变现有代码,那么引进bug或产生意外副作用的机
会将大幅度减少。
大师:非常好。蚱蜢,今天的谈话就到这里。希望你能在这个主题上更深入……
牢记,代码应该如同晚霞中的莲花一样地关闭(免于改变),如同晨曦中的莲花一
样地开放(能够扩展)。


原文链接: http://www.dlog.cn/nicholascoder/diary/46301325

转载于:https://my.oschina.net/moroseyu/blog/51354

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值