设计模式概述
前言
设计模式概述。
编程代码的原则/面向对象的优势:4点
- 可维护
- 可复用
- 可扩展
- 可灵活/灵活性好
统一建模语言(UML)图的基本关系:6种
- 继承:实线,三角箭头,指向被继承类
- 实现:虚线,三角箭头,指向被实现接口
- 依赖:虚线,箭头,指向被依赖者
- 关联:实线,箭头,指向被关联者
- 聚合:空心菱形,实线箭头,指向被聚合者
- 组合:实心菱形,实线箭头,指向被组合者
依赖和关联、聚合、组合的区别:
- 依赖表现:局部变量,方法形参,静态方法调用
- 关联、聚合、组合表现:一个类持有另一个类对象(的引用)作为成员
依赖、关联、聚合和组合关系的弱强程度:依赖<关联<聚合<组合
设计模式的原则:7种
开放-封闭/开-闭原则(OCP)
描述:
- 针对软件实体:类、模块和函数等:对扩展是开放的,对更改是封闭的
应用:
- 实现业务逻辑时,可扩展/增加新的代码,不可更改/不修改旧的代码
依赖倒转/置原则(DIP)
描述:
- 高层模块不应该依赖底层模块,两种模块都应该依赖抽象
- 抽象不应该依赖细节
- 细节应该依赖抽象
其中的“不应该”、“应该”是“依赖倒转”的体现
应用:
- 不面向实现编程,面向接口/抽象类编程
- 使用抽象类/接口作为变量、参数
单一职责原则(SRP)
描述:
- 类的逻辑/功能/职责单一
- 引起类变化的原因应该有且仅有一个
应用:
- 拆分业务对象、逻辑
最少知识原则/迪米特法则(LOD)
描述:
- 类间弱耦合
应用:
- 尽可能封装类
里氏代换原则(LSP)
描述:
- 子/派生类型必须能够代换其父/基类型
- 子类可以扩展父类的功能,但不能改变父类的功能
- 本质:面向对象的多态
应用:
- 使用子类扩展业务逻辑
接口隔离原则(ISP)
描述:
- 客户端不应该依赖不需要的接口
- 类间的关系应该建立在最小的接口上
应用:
- 依据业务逻辑拆分复杂多用接口为简单专用接口
合成/聚合复用原则(C/ARP)
描述:
- 类间尽量使用依赖、关联、聚合和组合关系,不使用继承关系
应用:
- 类间尽量使用依赖、关联、聚合和组合关系,不使用继承关系
设计模式原则的关系(记忆方式)
- 总体规则——开放-封闭/开-闭原则(OCP)、依赖倒转/置原则(DIP)
- 设计模式的核心是面向对象
- 面向对象的封装——单一职责原则(SRP)、最少知识原则/迪米特法则(LOD)
- 面向对象的继承、多态——里氏代换原则(LSP)、接口隔离原则(ISP)
- 类间的关系描述——合成复用原则(CRP)
设计模式的类型:3种
依据意图:
- 创建型:负责提供创建对象的机制
- 结构型:负责将对象组装成较复杂的结构
- 行为型:负责对象间的高效沟通和职责委派
总结
设计模式概述。
参考资料
- 《大话设计模式》作者:程杰
- 常用设计模式有哪些? (refactoringguru.cn)
- 设计模式六大原则是什么-常见问题-PHP中文网
作者的话
- 感谢参考资料的作者/博主
- 作者:夜悊
- 版权所有,转载请注明出处,谢谢~
- 如果文章对你有帮助,请点个赞或加个粉丝吧,你的支持就是作者的动力~
- 文章在描述时有疑惑的地方,请留言,定会一一耐心讨论、解答
- 文章在认识上有错误的地方, 敬请批评指正
- 望读者们都能有所收获
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 夜悊的技术小宅!