写在前面
这是我们学习设计模式单的最后一章了,今天没有具体的设计模式讲解,而是针对于前面我们学习的常用的设计模式的总结。
我们要知道,现实开发工作中,情况要复杂的多,往往可能要组合多种模式来解决一个普遍的问题,希望这一篇文章可以指引你的方向 。。。
设计模式系列目录
- 《据说是程序员工作中用到的最多的模式:策略模式解析》
- 《暗中等待:观察者模式解析》
- 《穿了马甲你就牛逼了:装饰者模式解析》
- 《工厂模式-简单工厂、工厂方法、抽象工厂解析》
- 《单例模式的3种经典实现》
- 《常用设计模式之命令模式解析》
- 《神头鬼脸之适配器模式》
- 《设计模式之外观模式解析》
- 《最有用的设计模式之一-模板方法》
- 《行为型模式之迭代器模式解析》
- 《设计模式系列11-组合模式解析》
- 《设计模式系列:状态模式解析》
- 《代理模式解析,静态代理、动态代理一文全都告诉你》
对象村指南
我们都知道设计模式也是 OO 思想的一种最佳实践,这里我们来看一些技巧,让你更能够和真实世界中的模式愉快相处:
- 明确常用设计模式的定义,包括脑海中要有其类图,我们过往的每篇文章都有提供;
- 学习如何将模式维持在它应属的分类中,本文后面有讲到;
- 避免滥用设计模式,快速解决问题仍然是首要原则;
设计模式的分类
随着我们学习的设计模式越来越多,有必要将它们分级分类,让大脑方便将它们组织起来,以简化我们大脑寻找模式的过程。
最广为人知的方式就是根据模式的目标分成三个类目:创建型、行为型和结构型。
创建型
创建型模式涉及到将对象实例化,这类模式都提供一个方法,将客户从所需要实例化的对象中解耦。也就是说不需要客户自己去创建某个具体对象,只需要调用模式提供的方法就可以获取到所需要的对象。
创建型模式包括:
- Singleton
- Builder
- Prototype(原型模式)
- AbstractFactory
- Factory Method
行为型
记住一点,只要是行为型模式,都涉及到类和对象如何交互及分配职责。
行为型模式包括:
- Template Method
- Visitor
- Mediator
- Iterator
- Command
- Interpreter
- Memento
- Observer
- Chain of Responsibility
- State
- Strategy
结构型模式
结构型模式可以让你把类或对象组合到更大的结构中。
结构型模式包括:
- Decorator
- Proxy
- Composite
- Facade(外观模式)
- Flyweight
- Bridge
- Adapter
注意:上面的模式(未加粗)的七哥的文章并没有写,感兴趣的小伙伴可以自行查阅,或者买一本四人组的GOF。
关于模式的思考
我们虽然学习设计模式,也鼓励使用设计模式,但是切不可为了设计模式而设计模式;
怎么理解呢?
- 首先,当你设计时,尽可能地用最简单的方式解决问题。你的目标应该是简单,而不是“如何在这个问题中应用模式”。并不是会使用模式的就是资深开发,如果你能保持简单的设计,那么你一定会受到团队小伙伴的尊敬。
- 你要知道何时需要模式? 这是最重要的问题,不过这个也是最难的问题,因为没有一定的经验和知识是不好下结论的。 作为新手我们要做的就是掌握所有设计模式的意图和应用部分。在你碰到问题,就可以尝试去使用,只要思考清楚这个模式所带来的后果,以及对代码其它部分的影响,只要看起来没啥毛病就用它吧!
- 重构的时间就是模式的时间。这个不用多说,如果让你来做代码重构,目标就是改善其结构而不是改代码的功能逻辑,这就是很好的时机,使用设计模式让代码有更好的可读性和扩展性。比如说,代码中充满了if/else 这可能意味着需要使用状态模式。
- 如果不需要,就别做。 不要意想未来可能出现的变化而去使用设计模式,一旦使用了就会引入很多麻烦,比如会有很多个类等。
设计模式是一门需要终身学习的知识,随着经验和知识的增加,我们会致力于最能解决问题的简单方案。 考虑对象的原则,以及它们之间的折忠。当对模式的需要自然出现时,作为资深开发就能拿捏得宜地采用模式。
个人公众号
- 觉得写得还不错的小伙伴麻烦动手点赞+关注;
- 文章如果存在不正确的地方,麻烦指出,非常感谢您的阅读;
- 推荐大家关注我的公众号,会为你定期推送原创干货文章,拉你进优质学习社群;
- github地址:github.com/coderluojust/qige_blogs