设计模式,Design Pattern 代表了构造某一事物的最佳实践。软件设计模式通常被有经验的面向对象的软件开发人员所采用,因为他们一些场景问题的最佳解决方案,这些解决方案是众多开发人员,设计人员在相当长的一段时间内从错误和经验中总结而来的。在我们阅读一些开源框架的时候,总会感觉有一些困惑,其中一部分原因就是我们不理解这其中涉及的设计模式。尤其像Spring,MyBatis等较为著名的开源软件更是设计得较为优秀,自然是很多设计模式都会使用的,甚至是设计设计模式的变种和嵌套等,因此可以说不懂设计模式的开发人员不是好的开发人员,不会合理使用设计模式的开发人员不能成为一名优秀的开发人员,因此有了这设计模式的学习。
设计模式的有六大原则:
1.开闭原则-open close principle
对扩展开放,对修改关闭。也就是对程序功能扩展的时候不用修改原来的代码,这就要求我们使用接口和抽象类而不是实现类,这也就是为什么开源框架中一般会大量使用接口和抽象类的原因。
2.里氏替换原则 likvo substitution principle
任何基类可以出现的地方,子类一定可以出现。该原则是对开闭原则的补充,因为要实现开闭原则就是要面向接口和抽象类编程,而实际的方法调用却是具体的实现类,而这层抽象关系的实现原则就是LSP,确保了该原则才能保证子类的功能扩展不影响整个模块的其他功能。
3.依赖倒转原则 dependence inversion principle
也就是针对接口编程,依赖于抽象而不是具体
4.接口隔离原则 interface segregation principle
使用多个隔离的接口要好于使用单一接口,因为前者可以降低系统的耦合度。
5.迪米特原则 demeter principle
一个实体尽量少于其他实体之间发生相互作用,使得系统模块相互独立。
6.合成复用原则 composite reuse principle
尽量使用合成或者聚合的方式,而不是继承
设计模式主要分为三类,分别是创建型,结构型,行为型,共32种。创建型模式让我们以一种更加灵活的方式创建复杂对象并隐藏创建逻辑,而不是直接通过new 运算进行操作;结构型模式让我们以一种友好的方式对进行组合;行为型模式关注对象之间的通信方式。后续我们会针对每一类的每一种设计模式进行学习,并结合开源框架的使用进行剖析。