【一分钟入门】设计模式
【前言】
本文是本人学习设计模式时记录的笔记,涉及的内容已经简化过,更加注重的是本质的把控,没有编程基础的同学谨慎参考。
【设计模式】目的
我们为什么要使用设计模式呢,或者说设计模式有什么好处呢?希望下面的回答会帮到你
1.代码重用性(合适的设计模式可以避免相同功能重复编码的情况)
2.可读性(设计编码规范,便于他人理解与日后维护)
3.可扩展性(方便添加新的功能)
4.使得程序高内聚低耦合
【设计模式】7大原则
以后讲的23种设计模式都是基于以下7个原则设计的
1.单一原则
2.接口隔离原则
3.依赖倒转原则(亦称:依赖导置原则)
4.里氏替换原则
5.开闭原则
6.迪米特法则
7.合成复用原则
这些原则的核心思想有3点
1.独立应用中需要变化之处
2.面向接口编程,而不是面向实现编程
3.为了交互对象之间的松耦合设计而努力
【7大原则】单一原则
【解析】顾名思义,一个类只负责一个职责
【目的】
1.降低类的复杂度,让每个类都各司其职
2.降低后续变更引起的风险
3,提高类的可读性,可维护性
【能否违反】可以违反
【7大原则】接口隔离原则
【解析】一个类对另一个类的依赖应该建立在最小的接口上
【依赖】在类中用到对方即为依赖
【举例】看下图1
Class A通过Interface1会依赖使用Class B但是A只会使用到接口中的1,2,3这三个方法
Class C通过Interface1会依赖使用Class D但是C只会使用到接口中的1,4,5这三个方法
这样就不是一个类对另一个类的依赖应该建立在最小的接口上了,也就是违反了【接口隔离】
那么如果是符合接口隔离原则应该是如何分配接口呢?
看下图2,简单来说就是将使用的接口拆开,使得一个类对另一个类的依赖应该建立在最小的接口上
【7大原则】依赖倒转原则
【解析】一句话概括:面向接口编程(Object-Oriented Design, OOD)
【PS】
1.底层接口尽量有抽象类或接口
2.变量,声明类型尽量是抽象类或是接口
3.继承时需要遵循里氏替换原则
4.传递方式:接口传递;构造方法传递;setter方法传递
【7大原则】里氏替换原则
【解析】引用基类的地方必须可以透明地使用其子类对象——翻译成人话就是:子类可以扩展父类的功能,但不能改变父类原有的功能。
【作用】
1.里氏替换原则是实现开闭原则的重要方式之一。
2.它克服了继承中重写父类造成的可复用性变差的缺点。
3.它是动作正确性的保证。即类的扩展不会给已有的系统引入新的错误,降低了代码出错的可能性
【实现】
里氏替换要求:子类尽量不要重写父类的方法,尽量使用利用聚合,组合,依赖解决
【7大原则】OCP原则(开闭原则)
【解析】对扩展开放(可以添加类、方法),对修改关闭(不改变原代码,不改变原功能)
【PS】
1.开闭原则是整个设计模式的核心,其他原则以及使用设计模式的目的其实都是为了实现开闭原则
2.开闭原则要求我们用抽象构建框架用实现扩展细节
【7大原则】迪米特法则(最少知道原则)
【解析】对自己依赖的类知道的越少越好
【核心】降低类之间的耦合
【实现】只与直接朋友通讯
【直接朋友】
两个类之间有耦合关系就是直接朋友
耦合关系包括:依赖,关联,组合,聚合
具体表现为:一个类作为另一个类的成员变量,方法参数,方法返回值
【7大原则】合成复用原则
【解析】尽量使用合成聚合的方式而不是继承
【设计模式】总结
设计模式一共有7大原则,23种具体的设计模式。而这所有基本上就是为了一个原则服务——OCP原则。
设计模式的核心思想或者说最初设计的目的——其实就是为了交互对象之间的松耦合设计而努力
设计模式向我们传递的更多是编程思想,而不是一成不变的模板
如果你觉得本文在某个时刻带给了你一些新的体会
我将不胜荣幸,无以所求,只求点个赞发个评论~