避免“锤子”心理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了避免“锤子”心理相关的知识,希望对你有一定的参考价值。

避免“锤子”心理

昨天看《大话设计模式》,其中讲到主人公小菜,自从理解了面向对象中的继承,就喜欢使用这样的代码结构,进而限制了思维的事。

我不由地开始反思自己最近的想法。要引以为戒啊。

一、反思

这种“锤子”心理的本质其实是想要立刻有回报——我学会了这手,就要让它派上用场,否则我付出了时间和心血,我就亏本了。结果很有可能为了使用而使用,不仅没有给自己带来方便,反而带来麻烦。

学技术其实很忌讳这样的心理。要引以为戒。

同时,学技术,还应该有这样的肚量——这个东西我学习了,可能不会用上,可能用得很少,或者干脆用不上(可能性很小的哦,更多的情况是你在使用,缺浑然不觉)。但是话说回来——夜路走多了,总会用得上的。除非不对路。

二、组合/聚合复用原则

继承、组合、聚合都是面向对象中复用代码的常用手段。

继承。对象的继承关系是在编译时就定义好了,所以无法在运行时改变从父类继承的实现。子类的实现与它的父类有非常紧密的依赖关系,以至于父类实现中的任何变化必然会导致子类发生变化。当你需要复用子类是,如果继承下来的实现不合适解决新的问题,则父类必须重写或者被其他更合适的类替换。这种依赖关系限制了灵活性并最终限制了复用性。

组合。组合是一种强“拥有”关系,例如大雁和翅膀。大雁拥有翅膀,且两者生命周期一样。组合强调“组”字,是部分和整体的关系。

聚合。聚合是一种弱“拥有”关系,例如大雁和雁群。雁群少一只大雁其实还是可以称之为雁群的。聚合强调“聚”字,是包含和被包含的关系,但被包含不一定就是其中的一部分。

三、随感

上面好大一段都是抄的《大话设计模式》原话。如果我们只是整理、解析别人东西,其实是不可能超越的。只有你去创造,去开拓,去建立前人没有的东西的时候,才能成一家之言。

 


以上是关于避免“锤子”心理的主要内容,如果未能解决你的问题,请参考以下文章

如何避免使用expect_any_instance_of锤子?

设计模式只是一把锤子 | 文末赠书

C语言实现的猜拳游戏(剪子锤子布),让你与电脑对决

锤子手机支持万能钥匙不

锤子线性的反转性预测

锤子手机上如何查看其logcat日志