设计模式到底是什么?

  • 总结起来就一句话:设计模式就是一些过去技术的大师们总结出来的一系列写代码的套路
  • 大佬们经过实践总结又将其这些套路分为三类:创建型结构型行为型
    • 创建型模式,是为了创建对象使用的,至于为什么创建个对象(直接new一个不就完事了吗)还需要如此多不同的套路,后续你就知道,这边不赘述。
    • 结构性模式,是用来组织不同的小对象,从而变成更大更复杂结构的对象。
    • 行为型模式,是用来控制协调不同的对象的运行流程,因为实际开发场景下,不可能是孤零零一个对象在运行,会涉及多个对象交互,这中间的协调工作就会使用到行为型模式。
  • 每一类型的模式都包含多个具体模式,如下图(共23种设计模式)。后续每篇文章都会对其中一个模式做详解剖析,这边就不再赘述。
    设计模式

这些套路到底好在哪里?

  • 很多人学设计模式觉得很难,很重要原因是,不知道这个模式到底好在哪里?解决了什么痛点?我能用它来干啥?所以只能生搬硬套。其实模仿也是无可厚非的,进步就是从模仿优秀者开始的。但是如果想要能驾驭一门知识,还是需要了解其本质的。
  • 所以这边需要提一下一个跟设计模式紧密相关的概念——面向对象的七大设计原则。其实,如何评判一个设计模式好坏,就是用这七个原则来衡量的。这些原则有开闭原则里氏替换原则依赖倒置原则单一职责原则接口隔离原则迪米特法则组合聚合复用原则。还是比较抽象的,但是我这边就不展开了,大家也没必要去死记硬背这些原则,没意义。后续在讲到每个设计模式的优缺点时候,我会穿插提到这些设计原则,到时再做详解。

设计模式一定需要用吗?

  • 这边先泼个冷水,这个设计模式系列你看完,你还真不一定能立刻用上,甚至有的时候你用了还是画蛇添足,会给应用带来一些不必要的问题和麻烦。尴尬……设计模式对不同层级的程序(应用层级、类库层级、框架层级)重要性不一样。设计模式更多可能会用在一些类库和框架的设计,或者对老项目重构,在业务逻辑开发中使用的比较少,甚至会引入不必要的复杂度。
  • 当用则用,不合适,或者感觉没把握,千万不要强上!👀当你的开发受到阻碍,亟需一条出路,哎,这个时候设计模式可以登场了……

那这是为什么呢?

  • 因为像类库框架这类产品,会被不同的人大量重复使用,所以对其重用性、扩展性、灵活性有很高的要求。而对于普通的业务逻辑开发,这方面要求较低。