1 开闭原则 Open-Closed Principle, OCP
简述:对扩展开放,对修改关闭
详述:强调的是用抽象构建框架,用实现扩展细节。可以提高软件系统的可复用性及可维护性。开
闭原则,是面向对象设计中最基础的设计原则。它指导我们如何建立稳定灵活的系统,
例如:我们版本更新,我尽可能不修改源代码,但是可以增加新功能
2 依赖倒置原则 Dependence Inversion Principle,DIP
简述:高层模块不应该依赖底层模块,二者都应该依赖其抽象
详述:设计代码结构时,高层模块不应该依赖底层模块,二者都应该依赖其抽象。抽象不应该依赖细节;细节应该依赖抽象。通过依赖倒置
比如:业务代码中实现某个具体的业务块,不应该直接写业务代码,应该将业务中涉及到的对象在代码层面上隔离开,然后通过调用各个对象的抽象类来实现
3 单一职责原则 Simple Responsibility Pinciple,SRP
简述:不要存在多于一个导致类变更的原因
详述:开发中一个类或者一个函数尽量只负责做一件事,尽量不要在同一个方法中做很多事,这样不便于后期业务拓展或者修改而带来的维护成本和风险的增加
4 接口隔离原则 InterfaceSegregationPrinciple,ISP
简述:不要存在一个接口包含各种方法,应当划分的足够细致
详述:业务设计中,尽量根据业务类型以及对今后业务拓展的预判,将业务从逻辑上隔离开,分成不同的接口层,一个类需要实现接口的方法时,实现不同的接口,而不是全部放在一个接口层,然后实现这个接口所有的方法
5 迪米特法则(最少知道原则) LawofDemeterLoD
简述:指一个对象应该对其他对象保持最少的了解
详述:当作参数传递到方法中的,或者属于类成员变量的,称为朋友类,出现在方法中的不是朋友类,一个类中的方法,只关心跟它直接相关的业务,不与他直接相关的抽离成其它类和方法镜像调用
6 里氏替换原则 Liskov Substitution Principle,LSP
简述:是指如果对每一个类型为 T1 的对象o1,都有类型为T2的对象o2,使得以T1定义的所有程序P在所有的对象o1都替换成o2时,程序P的行为没有发生变化,那么类型T2是类型T1的子类型
详述:在设计时,定义业务对象类的时候,要考虑到上述情况,上述情况是以结论作为依据推到,而在设计之初,就应该很好的规避这个问题,要做到父子类对于程序的兼容。即:子类可以扩展父类的功能但不能改变父类原有的功能
7 合成复用原则 Composite/Aggregate Reuse Principle,CARP
简述:尽量使用对象组合(has-a)/聚合(contanis-a),而不是继承关系达到软件复用的目的(少继承,多注入)
详述:尽量降低耦合,某个类改变时,对其他类的影响尽量减小。尽量使用对象组合、聚合,而不使用继承关系达到代码复用的目的