单一职责原则、开放-封闭原则、依赖倒转原则和迪米特法则、合成聚合复用原则

单一职责原则:

  就一个类而言,应该仅有一个引起他变化的原因。

  目的是为了尽可能的解耦。

例子:

  如果是一个鸟类,应该只有鸟的变化是改变这个类的原因,天气和猪的变化不应该是改变这个类的原因;

  如果是一个鸟的脚类,应该只有鸟的脚的变化是改变这个类的原因,鸟的嘴和猪的变化不应该是改变这个类的原因;

 

开放-封闭原则:

  对扩展开放,对修改封闭。

  目的是为了程序能尽可能无限扩展,而不是仅仅改变。

  然而对程序中的每个部分都刻意抽象是更糟糕的想法,请记住,拒绝不成熟的抽象和抽象本身一样重要。

例子:

  当初老子只生产苹果:客户端-苹果类

  后来二笔产品要老子同时生产草莓,老子立即抽象这个变化:客户端-水果类  苹果子类 草莓子类,并机制的使用工厂模式封装子类产品。

 

依赖倒转原则:

  模块之间不应该互相依赖,它们都应该依赖抽象;抽象不应该依赖细节,细节应该依赖抽象。

  即针对接口编程,具体一点就是接口类或抽象类。程序中的依赖关系都应该终止于抽象类或者接口。

里氏代换原则:

  子类必须能替换掉它们的父类。程序中用子类代替父类,程序的行为应该是没有变化的。

  这要求子类具备父类的所有行为和特征。

例子:

  想想策略模式,客户端只依赖context接口和策略抽象类,具体策略实现和客户端没关系;具体策略类只依赖并实现策略抽象类,具体客户端怎么使用也和具体策略类没关系。

 

迪米特法则:

  如果两个类不必彼此直接通信,那么这两个类就不应该发生直接的作用关系;如果其中一个类需要调用另一类的某一个方法的话,可以通过第三者转发这个调用。

  说人话就是每一个类都应该尽量降低成员的访问权限,能封起来就别暴露。

  根本思想是强调类之间的松耦合,耦合越弱越利于复用。一个类被修改,越不容易触及其他的类。

合成复用原则:

  尽量使用合成/聚合,尽量不要使用类继承;

  原因是父类和子类之间是强耦合的,合成/聚合则是松耦合的。

posted @ 2020-07-17 23:02  吉尔加斯  阅读(283)  评论(0编辑  收藏  举报