面向对象原则
单一职责原则
一个类负责一个事件,,降低类的复杂度,提高类的可读性,降低系统维护的成本,当需求变动时,可以将更改代码所带来的波动性降至最低
开闭原则
系统中的对象,类,模块,函数,方法等,对于拓展应该是开放的,但对于修改应该是关闭的。
当需求发生改变时,我们应该尽可能地去拓展原来的代码,而不是修改原来的代码。
里氏替换原则
子类可以拓展父类的功能,但是不能改变父类原有的功能:
- 子类可以实现父类的抽象方法,但不能覆盖父类的抽象方法
- 子类可以有自己独有的方法
- 子类重载父类的方法时,方法的参数要比父类的参数更加宽松
- 子类实现父类的抽象方法时,父类的返回值要比子类更加严格
依赖倒置原则
高层模块不应该依赖底层模块,两者都应该依赖其抽象,抽象不应该依赖细节,细节应该依赖抽象。
高层值调用端,底层模块指具体的实现类。实现类之间不发生直接的依赖关系,他们之间的依赖关系是通过接口来实现的。
接口隔离原则
类之间的依赖关系应该建立在最小的接口上,客户端不应该依赖于它不需要的接口
迪米特原则
一个对象应该对其他对象保持最小的了解