六大设计原则

六大设计原则

1.单一职责原则(Single Responsibility Principle)

定义:应该有且仅有一个原因引起类的变更
单一职责原则的好处

  • 类的复杂性降低,实现什么职责都有清晰明确的定义
  • 可读性提高,复杂性降低
  • 可维护性提高,可读性提高
  • 变更引起的风险降低

2.里氏替换原则(Liskov Substitution Principle)

定义:
1)如果对每一个类型为S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有的对象o1都代换成o2时,程序P的行为没有发生变化,那么类型S是类型T的子类型。
2)只要父类能出现的地方子类就可以出现,而且替换为子类也不会产生任何错误或异常,使用者可能根本就不需要知道是父类还是子类。反过来,有子类出现的地方,父类未必就能适合。

里氏替换原则为良好的继承定义了一个规范:

  • 1.子类必须完全实现父类的方法(在类中调用其他类时务必要使用父类或接口,如不能,则违背LSP原则)
  • 2.子类可以有自己的个性
  • 3.覆盖或实现父类的方法时输入参数可以被放大(子类中方法的前置条件必须与超类中被覆写的方法的前置条件相同或者更宽松)
  • 4.重写或实现父类的方法时输出结果可以被缩小

3.依赖倒置原则

在Java语言中,抽象就是指接口或抽象类,两者都是不能直接被实例化的;细节就是实现类,实现接口或继承抽象类而产生的类就是细节,其特点就是可以直接被实例化,也就是可以加上一个关键字new产生一个对象。在Java中的表现是:

  • 模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或抽象类产生的;
  • 接口或抽象类不依赖于实现类;
  • 实现类依赖接口或抽象类。

在Java中,只要定义变量就必然要有类型,一个变量可以有两种类型:表面类型和实际类型,表面类型是在定义的时候赋予的类型,实际类型是对象的类型。

4.接口隔离原则

接口是我们设计时对外提供的契约,通过分散定义多个接口,可以预防未来变更的扩散,提高系统的灵活性和可维护性。

5.迪米特法则(Law of Demeter)

一个类应该对自己需要耦合或调用的类知道得最少。
类与类之间的关系是建立在类间的,而不是方法间,因此一个方法尽量不要引入一个类中不存在的对象。

6.开闭原则

开闭原则对扩展开放,对修改关闭,并不意味着不做任何的修改,低层模块的变更,必然要有高层模块进行耦合,否则就是一个孤立无意义的代码片段。

你可能感兴趣的:(设计模式)