面向对象的6大原则:
1 优化代码第一步 - 单一职责原则:
单一职责所表达的用意就是“单一”二字,正如上文所说,如何划分一个类一个函数的职责,每个人都有自己看法,这需要具体经验,和业务逻辑判断,但是,他也有些基本的指导原则,例如,俩个完全不一样的功能就不应该放在一个类中,一个类应该是一组相关性很高的函数,数据的封装,工程师可以不断地审视在自己的代码,根据其具体的业务,功能对类进行拆分,这是程序员迈出优化代码的第一步
2 让程序更稳定,更灵活-开闭原则:
软件中的对象(类,模块,函数等)应该是对扩展是开放的,但是对修改是封闭的,这就是开放关闭原则,也就是说当软件需要变化时,我们应该尽量通过扩展的方式实现变化,而不是更改已经有的代码,而遵循开闭原则的手段是抽象,程序一旦完成开发,程序中的一个类只应该因错误而修改,新的或者改变的特性,只应该新建不同的类来实现,新建的类应该通过继承的方式来来重用之前的代码,显然已存在的实现类对于修改是封闭的,新的实现类可以通过复写父类方法应对变化
3 构建扩展性更好的系统–里式替换原则
定义:所有引用基类的地方必须能透明的使用其子类的对象,简单来说就是,只要父类出现的地方,子类就可以出现,而且替换为子类后不会产生任何错误和异常
下面是一个例子
4 让项目拥有变化的能力 – 依赖倒置原则
依赖倒置原则有以下几个关键点
(1)高层模块不应该依赖底层模块,俩者都应该依赖其抽象
(2)抽象不应该依赖细节
(3)细节应该依赖抽象
在Java语言中,抽象指的是接口或者抽象类,俩者都不能直接被实例化;细节就是实现类,实现接口或者现实抽象类,其特点是可以直接实例化,高层模块就是调用端,底层模块就是实现类,依赖倒置在java中就是:模块间的依赖通过抽象发生,实现类之间不发生直接依赖关系,其依赖关系是通过抽象或接口产生
5 系统有更高的灵活性–接口隔离原则
定义:客户端不应该依赖他不需要的接口,另一种定义是:类间的依赖关系应该建立在最小的接口上,接口隔离原则将非常庞大臃肿的接口拆分成更小更具体的接口,这样客户端只需要知道他们感兴趣的方法,接口隔离原则目的在于系统解开耦合,从而容易重构,更改和重新部署
6 更好的扩展性–迪米特原则
也称4为最少知识原则,一个对象应与其他对象有最少的了解,通俗的来讲,一个类应该对自己需要耦合或调用的类知道最少,类内部如何实现与调用依赖没有关系,调用者或者依赖只需要知道他需要的方法即可, 其他的可以一概不管,,类与类之间关系越密切,耦合越大,当一个类发生改变时,对另一个类影响越大
他还有另一个解释,只与直接的朋友通信