面向对象的六大原则
1.1 单一职责原则(Single Responsibility Principle,缩写SRP)
一个类中,应该是一组相关性很高的函数、数据的封装。
1.2 开闭原则(Open Close Principle,缩写OCP)
开放——关闭原则:软件中的对象(类、模块、函数等)应该对于扩展是开放的,但是对于修改是封闭的。
1.3 里氏替换原则(Liskov Substitution Principle,缩写LSP)
第一种定义:
如果每一个类型为S的对象O1,都有类型为T的对象O2,使得以T定义的所有程序P在所有的对象O1都代换成O2时,程序P的行为没有发生变化,
那么类型S是类
型T的子类型。
第二种定义:
多有引用基类的敌方必须能透明地使用其子类的对象。只要弗雷能出现的地方子类就可以出现,而且替换为子类也不会产生任何错误或异常,
使用者可能根本不需要知道是父类还是子类。
里氏替换原则就是依赖于继承、多态这两大面向对象语言特性(抽象、继承、封装、多态)。
开闭原则和里氏替换原则,都同时强调了一个OOP的重要特性——抽象。
1.4 依赖倒置原则(Dependence Inversion Principle,缩写DIP)
依赖倒置关键点:
(1)高层模块不应该依赖低层模块,两者都应该依赖其抽象;(
高层模块就是调用端,低层模块就是具体实现类。)
(2)抽象不应该依赖细节;(
抽象指接口或抽象类,两者都是不能直接被实例化的)
(3)细节应该依赖抽象。(细节就是实现类,实现接口或继承抽象类而产生的类就是细节,其特点就是,可以直接被实例化。)
模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或抽象类产生的。
1.5 接口隔离原则(Interface Segregation Principle,缩写ISP)
第一种定义:
客户端不应该依赖他不需要的接口。
第二种定义:
类间的依赖关系应该建立在最小的接口上 。
目的:
系统解开耦合,从而容易重构、更改和重新部署。
1.6 迪米特原则(Law Of Demeter,缩写LOD,也称为最少知识原则,Least Knowledge Principle)
一个对象应该对其他对象有最少的了解。