七种原则
在看23种设计模式前,先对设计模式的七种设计原则进行了解,分别是开闭原则、里氏替换原则、依赖倒置原则、单一职责原则、接口隔离原则、迪米特法则、合成复用原则。
开闭原则是总纲,主要是告诉我们对扩展开放,对修改关闭;里氏替换原则是后续依赖倒置、单一职责、迪米特法则等原则的基础要求,告诉我们不要破坏继承结构;
依赖倒置原则告诉我们尽量面向接口编程;单一职责告诉我们职责要单一,方便维护;接口隔离原则和单一职责类似,需要精简接口,职责尽量单一;
迪米特法则告诉我们降低耦合度,可以通过中间人来促成两个单一职责服务的对话,其实相当于MVC中的C层;
合成复用原则告诉我们优先使用聚合关系复用,不使用继承关系复用。
用图说明
- 开闭原则
Windows 的主题是桌面背景图片、窗口颜色和声音等元素的组合。用户可以根据自己的喜爱更换自己的桌面主题,也可以从网上下载新的主题。这些主题有共同的特点,可以为其定义一个抽象类(Abstract Subject),而每个具体的主题(Specific Subject)是其子类。用户窗体可以根据需要选择或者增加新的主题,而不需要修改原代码,所以它是满足开闭原则的。
- 里式替换原则
定义鸟和几维鸟的更一般的父类,如动物类,它们都有奔跑的能力。几维鸟的飞行速度虽然为 0,但奔跑速度不为 0。
- 依赖倒置原则
定义“婺源网店”和“韶关网店”的共同接口 Shop,顾客类面向该接口编程。
- 单一职责
大学学生工作主要包括学生生活辅导和学生学业指导两个方面的工作,其中生活辅导主要包括班委建设、出勤统计、心理辅导、费用催缴、班级管理等工作,学业指导主要包括专业引导、学习辅导、科研指导、学习总结等工作。如果将这些工作交给一位老师负责显然不合理,正确的做 法是生活辅导由辅导员负责,学业指导由学业导师负责。
- 接口隔离原则
学生成绩管理程序一般包含插入成绩、删除成绩、修改成绩、计算总分、计算均分、打印成绩信息、査询成绩信息等功能,如果将这些功能全部放到一个接口中显然不太合理,正确的做法是将它们分别放在输入模块、统计模块和打印模块等 3 个模块中。
- 迪米特法则
明星由于全身心投入艺术,所以许多日常事务由经纪人负责处理,如与粉丝的见面会,与媒体公司的业务洽淡等。这里的经纪人是明星的朋友,而粉丝和媒体公司是陌生人,所以适合使用迪米特法则。
- 合成复用原则
汽车按“动力源”划分可分为汽油汽车、电动汽车等;按“颜色”划分可分为白色汽车、黑色汽车和红色汽车等,通过组合关系实现多种动力、多种颜色的定义。
共享一下资源:
* 《大话设计模式》: https://t00y.com/file/22083442-403125607
* 《深入浅出设计模式》: https://t00y.com/file/22083442-403125625