设计原则并不难理解,但是从看懂到会用却不容易。如果对设计原则理解不透彻,在开发里生搬硬套,就会适得其反。 要理解设计原则的初衷,为了解决哪些问题,应用在哪些场景。 今天学习几种经典的设计模式,SOLID,KISS,YAGNI,DRY,LOD。
SOLID SOLID原则包含5个原则组成,分别是:单一职责原则,开放原则,里式替换原则,接口隔离原则,依赖反转原则,首字母组合起来就是SOLID。
- 单一职责原则 一个类只负责一个功能,一个模块只负责设计的需求。类不要大而全,要设计颗粒度小,功能单一,把相关的代码放一起,不相关的代码踢出去。单一职责是为了高内聚,低耦合,提高代码复用性,可读性,可维护性。
- 开闭原则 开闭原则就是准寻对扩展开发,对修改关闭。对扩展开发是为了应对新需求,对修改关闭是为了已有代码稳定。在开发时候要事先预留好扩展点,以便以后有新需求时候做到不改动代码结构,做到最小改动下把新代码加到扩展中。
- 里式替换原则 里式替换就是子类继承父类设计初衷,并增强。比如父类方法传人数组顺序排序并返回数组,子类重写就不能限制数组长度,逆序排序并返回字符串,子类可以优化顺序排序效率,输入输出也必须和父类一致。
- 接口隔离原则 接口这里可以理解为一组接口集合,单个接口,目的是类间的依赖关系应该建立在最小的接口上,接口设计要尽量单一,让调用者只依赖他需要的接口。
- 依赖反转原则 依赖反转原则就是高层次模块不依赖低层次模块。要做到这点要求低层次模块足够抽象,通用,不只为了高层次模块需求而设计。这个原则在框架设计很有用,抽象不要依赖实现细节,具体实现细节依赖抽象。
KISS KISS英文是Keep it simple and stupid,翻译成中文就是保持简单。KISS可以用到很多场景中,不只是软件开发。可维护性和可读性是评判代码质量的重要指标,KISS就是保持代码可读性和可维护性重要手段。总结下就是不要使用让人看不懂的代码,不要重复造轮子,不要过度优化。
YAGNI YAGNI原则核心思想就是不要过度设计,不要在代码里引入用不到的框架。
DRY DRY原则很简单,不要写重复代码。不写重复代码就要提高代码复用性,如何提高复用性呢,我总结了一下几点:减少耦合,满足单一职责原则,模块化,业务和非业务逻辑分离,通用代码下层,使用面向对象4大特性,应用模板等设计模式。
LOD LOD又叫迪米特法则,英文翻译过来就是最小知识原则。LOD遵循不该有直接依赖的类之间,不要有依赖,有依赖的类之间,尽量只依赖必须的接口。这样做的目的是为了高内聚,低耦合,高内聚就是相关的功能放到同类模块,不相关的不要放一起,低耦合就是类与类之间关系简单清晰。
目前已经把所有设计原则讲完了,这些原则设计最终目的就是使代码高内聚低耦合。有些原则看起来很相似,其实出发的角度不一样。单一职责是从提供方法自身出发,迪米特原则是从关系出发,针对接口而非实现编程是从使用者角度等等。