本文共 1121 字,大约阅读时间需要 3 分钟。
设计模式
定义
面向对象的一套解决方案,提高代码的可复用性、可维护性、可读性、稳健性、安全性
本质
面向对象设计原则的实际应用
意义
对类的封装性、继承性、多态性以及类的关联关系和组合关系的理解
优点
- 提高程序员的思维能力、编程能力、设计能力
- 更好的设计
设计模式的基本要素
- 模式:在某些场景下,针对某类问题的某种通用的解决方案。
- 场景:项目所在的环境
- 问题:约束条件,项目目标等
- 解决方案:通用、可复用的设计,解决约束达到目标。
常用的七大原则
- 单一职责原则
- 接口隔离原则
- 依赖倒转原则
- 里氏替换原则
- 开闭原则
- 迪米特法则
- 合成复用原则
分类
创建型
创建型模式:对象实例化的模式,创建型模式用于解耦对象的实例化过程。
单例模式、抽象工厂模式、原型模式、建造者模式、工厂模式
结构型
结构型模式:把类或对象结合在一起形成一个更大的结构。
适配器模式、桥街模式、装饰模式、组合模式、外观模式、亨元模式、代理模式
行为型
行为型模式:类和对象如何交互,及划分责任和算法。
模板方法模式、命令模式、访问者模式、迭代模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、责任链模式
OOP的七大原则
开闭原则
- 最基础、最重要的设计
- 对扩展开放(提供方),对修改关闭(使用方)
- 软件需要变化时。尽量扩展软件实体实现
里氏替换原则
继承必须确保超类所拥有的所有的性质在子类中仍然成立
- 继承:父类已实现的方法,实际是设计和规范契约,子类随意修改会破坏继承体系
- 继承的弊端:程序的侵入性,程序的可移植性降低,增加对像间的耦合性
- 引用基类的地方必须能透明的使用子类的对象
- 子类尽量不要重写父类的方法
依赖倒转原则
- 高层模块不该依赖底层模块,二者应该依赖其抽象
- 抽象不应该依赖细节,细节应该依赖细节
- 依赖倒置的中心是面向接口编程
- 使用接口或者抽象的原则是制定好规范,不涉及具体操作,把展现细节的任务交给实现类完成
单一职责原则
- 一个类应该只负责一项职责
- 控制类的粒度大小
- 将对象解耦
- 提高内聚性
注意
- 降低类的复杂度,一个类只负责一项职责
- 提高类的可读性,可维护性
- 降低变更引起的风险
接口隔离原则
Interface segregation principle
客户端不应该依赖它不需要的接口,即一个类对另外一个类的依赖应该建立在最小的接口上
合成复用原则
尽量先使用组合或者聚合关系等关联关系实现,其次才考虑使用继承关系来实现
迪米特法则
只与朋友交谈不和陌生人说话
- 一个对象应该对其他对象保持最少的了解
- 类与类关系越密切,耦合度越大
- 最少知道原则,只与直接朋友进行通信(有耦合关系) 合成复用原则 尽量使用合成/聚合的方式,而不是继承
转载地址:http://gofli.baihongyu.com/