Appearance
实际上,所有设计原则的目的都是提高代码的扩展性,实现高内聚、低耦合,只是手段(出发角度)不同:
- 开闭原则是从理念本身出发
- 单一职责原则是从功能的角度出发;
- 迪米特原则从类之间的关系出发(不该依赖的不依赖,要依赖的最小必要依赖);
- 接口隔离原则是从接口调用者的角度出发;
- 里式替换原则是从类的继承关系角度出发;
- 控制反转(依赖倒置)原则是从程序的控制权角度出发。 目的是提高代码可读性和可维护性从而间接提升代码可扩展性的设计原则有: 1. KISS、YAGNI 2. DRY ----- > 目的都是实现高内聚低耦合,但是出发的角度不一样,单一职责是从自身提供的功能出发,迪米特法则是从关系出发,针对接口而非实现编程是使用者的角度,殊途同归。
总结
- 单一职责原则 适用对象: 模块,类,接口 白话:职责太多,容易被依赖(高耦合),以后维护,容易牵一发而动全身。(易维护性)
- 接口隔离原则 适用对象:接口,函数 白话:有些是不需要让你知道的,避免调用者需要了解的太多(最小知识原则)。有些是不能让你知道的,属于权限问题,需要隔离开来。
- 基于接口而非实现编程 适用对象: 接口,抽象类 白话:易维护和可扩展性问题。业务不稳定,于是依赖相对稳定的接口。
- 迪米特法则 适用对象:模块,类 白话:这个只是原则,不是说从谁的角度考虑吧。只要符合这个原则,就能做到高内聚、低耦合。