避免“锤子”心理
昨天看《大话设计模式》,其中讲到主人公小菜,自从理解了面向对象中的继承,就喜欢使用这样的代码结构,进而限制了思维的事。
我不由地开始反思自己最近的想法。要引以为戒啊。
一、反思
这种“锤子”心理的本质其实是想要立刻有回报——我学会了这手,就要让它派上用场,否则我付出了时间和心血,我就亏本了。结果很有可能为了使用而使用,不仅没有给自己带来方便,反而带来麻烦。
学技术其实很忌讳这样的心理。要引以为戒。
同时,学技术,还应该有这样的肚量——这个东西我学习了,可能不会用上,可能用得很少,或者干脆用不上(可能性很小的哦,更多的情况是你在使用,缺浑然不觉)。但是话说回来——夜路走多了,总会用得上的。除非不对路。
二、组合/聚合复用原则
继承、组合、聚合都是面向对象中复用代码的常用手段。
继承。对象的继承关系是在编译时就定义好了,所以无法在运行时改变从父类继承的实现。子类的实现与它的父类有非常紧密的依赖关系,以至于父类实现中的任何变化必然会导致子类发生变化。当你需要复用子类是,如果继承下来的实现不合适解决新的问题,则父类必须重写或者被其他更合适的类替换。这种依赖关系限制了灵活性并最终限制了复用性。
组合。组合是一种强“拥有”关系,例如大雁和翅膀。大雁拥有翅膀,且两者生命周期一样。组合强调“组”字,是部分和整体的关系。
聚合。聚合是一种弱“拥有”关系,例如大雁和雁群。雁群少一只大雁其实还是可以称之为雁群的。聚合强调“聚”字,是包含和被包含的关系,但被包含不一定就是其中的一部分。
三、随感
上面好大一段都是抄的《大话设计模式》原话。如果我们只是整理、解析别人东西,其实是不可能超越的。只有你去创造,去开拓,去建立前人没有的东西的时候,才能成一家之言。
时间: 2024-10-15 17:00:13