单一原则
就一个类而言,应该仅有一个引起它变化的原因
单一原则主要用意就是 【单一】 二字
如何划分一个类一个职责每个人都有自己的看法 需要根据业务而定 但也有一些基本原则
两个完全不一样的功能就不应该放在一个类中 , 一个类中应该是一组相关性很高的函数,数据的封装
开闭原则
软件中的对象(类 模块 函数 等。。) 应该对于扩展是开放的 , 但是对于修改是封闭的
在软件的生命周期中, 因为变化 升级和维护 需要对软件原有的代码进行修改 ,可能会将错误引入原本已经测试过的代码中,破坏原有系统
程序一旦开发完成, 程序中的一个类的实现只因错误而被修改, 新的或者改变的特性应该通过新建不同的类来实现,新建的类可以通过继承的方式来重用原类的代码
里氏替换原则
如果对每一个类型为S的对象o1 , 都有类型为T的对象o2 , 使得以T定义的所有程序P在所有的对象o1都替换成o2时, 程序P的行为没有发生变化, 那么类型S是类型T的子类型 —————— 所有应用基本的地方必须能透明的使用其子类对象
依赖倒置原则
关键点: 1.高层模块不应该依赖低层模块 两者都应该依赖其抽象
2.抽象不应该依赖细节
3.细节应该依赖抽象
模块间的依赖通过抽象发生, 实现类之间不发生直接的依赖关系 ,其依赖关系是通过接口或者继承或者抽象类产生的
接口隔离原则
客户端不应该依赖它不需要的接口
另一种定义 类间的依赖关系应该建立在最小的接口上
接口隔离原则将非常庞大、臃肿的接口拆分成更小、更具体的接口 ,这样客户将只会需要知道他们感兴趣的方法
接口隔离原则的目的是系统解开耦合 从而更容易的重构、更改和重新部署
迪米特原则
一个对象应该对其他对象有最少的了解
调用者或者依赖者只需要知道它需要的方法即可, 其他的可一概不管。 类与类之间的关系越密切。耦合度越大 , 当一个类发生改变时, 对另一个类的影响也越大