如何正确理解设计模式?

设计模式感觉有些冗余了,开发中同学为了模式而模式,是不是有问题?

阅读 2.8k
4 个回答
  1. 从技术上讲,设计模式只不过针对某些具体场景提供了一些效率较高的以复杂度换灵活性的手段而已。 ~不应该为了模式而模式,避免过度设计~ (这里说的过度设计本质上就是你为一个小功能的实现支付了过多的复杂度代价,避免过度设计的关键是,你能正确评估未雨绸缪所引入的复杂度,相对于发生变动的可能性和破坏力,是否值得)——退一步讲,假如你接触的代码就一直没遇到某个模式,你也一直无法自发理解某个模式,那么这个模式就对你没用,你没必要一定要找机会用。
  2. 从业务上讲,设计模式的使用要求你能正确评估变动的可能性和破坏力,只能依靠行业经验,属于资历问题。如果你对当前场景没有足够的经验进行评估,最好的办法就是假定它不会频繁变化,只采用普通的高内聚低耦合策略,而不需要增加额外的复杂度来提供灵活性。等到确认出现变化时,再进行重构。

吾辈和上面两位的观念不太一样。如果你不尝试去用,就永远不知道为什么用?用的好处是什么?缺陷又是什么?那么,对于你而言,又怎么可能不生搬硬套的第一次使用呢?谁还不是从这个阶段过来的,吾辈个人建议如果有机会的话可以试着用,至于有问题的话,也能清楚它的局限何在了
可以参考 JavaScript 避免使用 if-else 的方法


设计模式感觉有些冗余了,开发中同学为了模式而模式,是不是有问题?

是的,吾辈并不否认这有问题,但吾辈个人还是坚持以上观点 -- 不使用就永远不会用,不要因为别人说你用的烂就不敢尝试。取自某导演的一句话:第一部电影,即便你拍的再烂,你也是导演了!

设计模式是用来解决复杂问题的,把复杂问题简单化,不要生搬硬套,不要把简单问题复杂化。具体可以参看我得github Wiki,是我在工作中自己使用设计模式总结出来的一套经验规则,地址为:DesignPatterns,建议参考[设计模式综合运用]部分。

设计模式在一定意义上是为了弥补语言的缺陷,就比如Adapter、Decorator模式,在Java这类静态语言中必须要依赖接口和设计模式才能实现,而像python这种动态语言,只需要把需要调用的方法当做参数传递进去就可以直接使用了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题