里氏代换原则
所有引用基类的地方必须能透明地使用其子类的对象
在软件中将一个基类的对象替换成子类对象,程序不会产生任何错误和异常,反之不成立。
依赖倒转原则
高层模块不应该依赖低层模块,都应该依赖抽象。抽象不应该依赖细节,细节应该依赖抽象。
实例:CRM系统 从TXT文件或Excel文件中的客户信息存储到数据库
问题:数据来源不相同时需要更换数据转换类
引入抽象数据转换类DataConvertor 从配置文件中读取具体数据转换类名称 重构结构图如下:
开闭原则是目标 里氏代换原则是基础 依赖倒转原则是手段
接口隔离原则
客户端不应该依赖不需要的接口
每一个接口承担一种相对独立的角色 尽量细化 方法尽量少
实例:CRM系统客户数据显示模块
重构结构图
合成复用原则
优先使用对象组合,而不是继承来达到复用的目的
复用时尽量使用组合/聚合/关联关系,少用继承。
示例:
重构后的结构图
##迪米特法则
一个软件实体应当尽可能少的与其他实体发生相互作用,减少对象之间的交互
示例:操作窗口的交互
引入一个中间类Mediator重构后