24种设计模式
设计模式概念
描述在一个特定环境里,整理并记录已知的可重现的问题及其成功的解决方案,给出如下定义:每个模式都是由三部分组成的一个规则,这个规则描述特定环境,问题和解决方案之间的关系
设计模式作用
提高软件可重用性。软件可重用性由高到低分为三个层次:代码的复用,类的复用,框架的复用。地位上,设计模式复用是比代码和类的复用层次更高的软件复用形式
创建型模式
规定创建对象的方式:
结构型模式
规定对象结构的方式:
行为型模式
规定对象行为的方式:
SOLID原则
单一职责原则(S)
- 含义:每一个职责都是一个变化的轴线,应使代码设计满足只有一个职责,只能有一个引起其变化的原因,否则会削弱其他职责的能力,导致设计的脆弱性
开闭原则(O)
- 含义:代码能对扩展开放,对修改关闭,即是说,代码能在不修改原有代码的前提下进行扩展
- 目的:适应需求改变,保持系统相对稳定,便于版本升级。变化越早,抽象越容易,否则后期牵扯东西太多导致抽象工作变得复杂。
- 怎么做:没有绝对的封闭,只能隔离变化,将变化进行抽象。通过添加代码实现,而不是修改现有代码。
- 优点:适应性、灵活性(扩展开放);稳定性、延续性(修改关闭)
里氏替换原则(L)
- 含义:把父类替换为其子类,程序行为没有变化。但反之不成立,使用子类不能适应于其父类
接口隔离原则(I)
- 含义:多个特定接口要好于一个通用的总接口。客户端不该依赖它不需要实现的接口,不建立庞大臃肿的接口,尽量细化接口,但接口的力度也不能太小,如果过小,则会造成接口数量过多,使设计复杂化。简单说,接口保持小而专一
- 优点:避免同一个接口里包含不同职责的方法,应遵循单一职责原则,保证接口责任明确,符合高内聚、低耦合
依赖反转原则(D)
- 含义:应用层不直接依赖实现层,而是彼此间通过抽象层桥接,让应用层依赖(应用)抽象层,实现层依赖(实现)抽象层
- 示意图
应用层(高层) ⬇️ 抽象层 ⬆️ 实现层(低层)
独立设计之迪米特法则
- 含义:又叫最少知识原则。一个类应该只和它的成员变量,方法的输入,返回参数中的类作交流,而不应该引入其他类
- 优点:降低类与类之间的耦合,减少类与类之间的关联程度,让类与类之间的协作更加直接
