设计模式系列汇总

写在前面

这是我们学习设计模式单的最后一章了,今天没有具体的设计模式讲解,而是针对于前面我们学习的常用的设计模式的总结。

我们要知道,现实开发工作中,情况要复杂的多,往往可能要组合多种模式来解决一个普遍的问题,希望这一篇文章可以指引你的方向 。。。

设计模式系列目录

  1. 《据说是程序员工作中用到的最多的模式:策略模式解析》
  2. 《暗中等待:观察者模式解析》
  3. 《穿了马甲你就牛逼了:装饰者模式解析》
  4. 《工厂模式-简单工厂、工厂方法、抽象工厂解析》
  5. 《单例模式的3种经典实现》
  6. 《常用设计模式之命令模式解析》
  7. 《神头鬼脸之适配器模式》
  8. 《设计模式之外观模式解析》
  9. 《最有用的设计模式之一-模板方法》
  10. 《行为型模式之迭代器模式解析》
  11. 《设计模式系列11-组合模式解析》
  12. 《设计模式系列:状态模式解析》
  13. 《代理模式解析,静态代理、动态代理一文全都告诉你》

对象村指南

我们都知道设计模式也是 OO 思想的一种最佳实践,这里我们来看一些技巧,让你更能够和真实世界中的模式愉快相处:

  • 明确常用设计模式的定义,包括脑海中要有其类图,我们过往的每篇文章都有提供;
  • 学习如何将模式维持在它应属的分类中,本文后面有讲到;
  • 避免滥用设计模式,快速解决问题仍然是首要原则;

设计模式的分类

随着我们学习的设计模式越来越多,有必要将它们分级分类,让大脑方便将它们组织起来,以简化我们大脑寻找模式的过程。

最广为人知的方式就是根据模式的目标分成三个类目:创建型、行为型和结构型。

创建型

创建型模式涉及到将对象实例化,这类模式都提供一个方法,将客户从所需要实例化的对象中解耦。也就是说不需要客户自己去创建某个具体对象,只需要调用模式提供的方法就可以获取到所需要的对象。

创建型模式包括:

  1. Singleton
  2. Builder
  3. Prototype(原型模式)
  4. AbstractFactory
  5. Factory Method

行为型

记住一点,只要是行为型模式,都涉及到类和对象如何交互及分配职责。

行为型模式包括:

  1. Template Method
  2. Visitor
  3. Mediator
  4. Iterator
  5. Command
  6. Interpreter
  7. Memento
  8. Observer
  9. Chain of Responsibility
  10. State
  11. Strategy

结构型模式

结构型模式可以让你把类或对象组合到更大的结构中。

结构型模式包括:

扫描二维码关注公众号,回复: 11812205 查看本文章
  1. Decorator
  2. Proxy
  3. Composite
  4. Facade(外观模式)
  5. Flyweight
  6. Bridge
  7. Adapter

注意:上面的模式(未加粗)的七哥的文章并没有写,感兴趣的小伙伴可以自行查阅,或者买一本四人组的GOF。

关于模式的思考

我们虽然学习设计模式,也鼓励使用设计模式,但是切不可为了设计模式而设计模式;

怎么理解呢?

  1. 首先,当你设计时,尽可能地用最简单的方式解决问题。你的目标应该是简单,而不是“如何在这个问题中应用模式”。并不是会使用模式的就是资深开发,如果你能保持简单的设计,那么你一定会受到团队小伙伴的尊敬。
  2. 你要知道何时需要模式? 这是最重要的问题,不过这个也是最难的问题,因为没有一定的经验和知识是不好下结论的。 作为新手我们要做的就是掌握所有设计模式的意图和应用部分。在你碰到问题,就可以尝试去使用,只要思考清楚这个模式所带来的后果,以及对代码其它部分的影响,只要看起来没啥毛病就用它吧!
  3. 重构的时间就是模式的时间。这个不用多说,如果让你来做代码重构,目标就是改善其结构而不是改代码的功能逻辑,这就是很好的时机,使用设计模式让代码有更好的可读性和扩展性。比如说,代码中充满了if/else 这可能意味着需要使用状态模式。
  4. 如果不需要,就别做。 不要意想未来可能出现的变化而去使用设计模式,一旦使用了就会引入很多麻烦,比如会有很多个类等。

设计模式是一门需要终身学习的知识,随着经验和知识的增加,我们会致力于最能解决问题的简单方案。 考虑对象的原则,以及它们之间的折忠。当对模式的需要自然出现时,作为资深开发就能拿捏得宜地采用模式。

个人公众号

在这里插入图片描述

  • 觉得写得还不错的小伙伴麻烦动手点赞+关注
  • 文章如果存在不正确的地方,麻烦指出,非常感谢您的阅读;
  • 推荐大家关注我的公众号,会为你定期推送原创干货文章,拉你进优质学习社群;
  • github地址:github.com/coderluojust/qige_blogs

猜你喜欢

转载自blog.csdn.net/taurus_7c/article/details/107891595