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