Java设计模式-六大设计原则

2021-03-05 22:28:33 浏览数 (1)

单一职责原则

一个类只负责一项职责,如若不然,就应该把类拆分;

比如相机,只有拍照的功能

里氏替换原则

克服继承的缺点

  • 里氏替换原则中,子类可以扩展父类的功能,但不要改变父类原有的功能,对父类的方法尽量不要重写和重载。因为父类代表了定义好的结构,通过这个规范的接口与外界交互,子类不应该随便破坏它。
  • 如果对每一个类型为S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有的对象o1都代替成o2时,程序P的行为没有发生变化,那么类型S是类型T的子类型。
  • 只要父类能出现的地方子类就可以出现,而且替换为子类也不会产生任何错误或异常,使用者可能根本就不需要知道是父类还是子类。但是,反过来就不行了,有子类出现的地方,父类未必就能适应。

依赖倒转原则

Dependence Inversion Principle

这个是开闭原则的基础,具体内容:面向接口编程。

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

接口隔离原则

Interface Segregation Principle

这个原则的意思是:每个接口中不存在子类用不到却必须实现的方法,如果不然,就要将接口拆分。使用多个隔离的接口,比使用单个接口(多个接口方法集合到一个的接口)要好。

迪米特法则

Law of Demeter

这个原则的意思是:每个接口中不存在子类用不到却必须实现的方法,如果不然,就要将接口拆分。使用多个隔离的接口,比使用单个接口(多个接口方法集合到一个的接口)要好。

开闭原则

Open Close Principle

开闭原则是一个非常基础的原则,其他的五个原则都是开闭原则的具体,也就是说其他的五个原则是指导设计的工具和方法,而开闭原则才是它们的精神领袖。只要我们遵守好其他的五大原则,那么我们设计的软件自然就遵守了开闭原则。

简单总结上面的五大原则就是:单一职责原则告诉我们实现类要职责单一;里式替换原则告诉我们不要破坏继承体系;依赖倒置原则告诉我们要面向抽象编程;接口隔离原则告诉我们设计接口要精简单一;迪米特法则告诉我们要降低耦合。而开闭原则告诉我们:要对修改关闭,对扩展开放。其实前面的五大原则一直反复强调的,几乎每一个原则都在强调的宗旨就是:解耦,单一,高内聚。

开闭原则解读:

  • 通过接口或抽象类约束扩展,对扩展进行边界限定,不允许出现在接口或抽象类中不存在的public方法
  • 参数类型、引用对象尽量使用接口或者抽象类,而不是实现类
  • 抽象层尽量保持稳定,一旦确定即不允许修改

设计模式是解决问题的思想,重要的是思想,而不是刻意在写代码时去追求设计模式

0 人点赞