常见的面向对象设计的原则,能够简化为SOLID原则,坚固slidi的软件须要遵循的原则。编程
一、单一职责原则SRP(Single Responsibility Principle)函数
定义:不要存在多于一个致使类变动的缘由。通俗的说,即一个类只负责一项职责。spa
二、开放-关闭原则OCP(Open-Close Principle)设计
定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。对象
三、里氏替换原则LSP(Liskov Substitution Priciple)接口
通俗的定义:全部引用基类的地方必须能透明地使用其子类的对象。ip
更通俗的定义:子类能够扩展父类的功能,但不能改变父类原有的功能。 ci
子类能够实现父类的抽象方法,可是不能覆盖父类的非抽象方法。部署
子类中能够增长本身特有的方法。it
当子类覆盖或实现父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。
当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。
四、依赖倒置原则DIP(Dependence Inversion Principle)
所谓依赖倒置原则(Dependence Inversion Principle)就是要依赖于抽象,不要依赖于具体。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就下降了客户与实现模块间的耦合。
模块间的依赖是经过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是经过接口或抽象类产生的;
接口或抽象类不依赖于实现类; 实现类依赖接口或抽象类。
五、接口隔离原则ISP(Interface Segregation Principle)
接口隔离原则(ISP)拆分很是庞大臃肿的接口成为更小的和更具体的接口,这样客户将会只须要知道他们感兴趣的方法。这种缩小的接口也被称为角色接口(role interfaces)。[2]接口隔离原则(ISP)的目的是系统解开耦合,从而容易重构,更改和从新部署。接口隔离原则是在SOLID (面向对象设计)中五个面向对象设计(OOD)的原则之一,相似于在GRASP (面向对象设计)中的高内聚性。
使用多个专门的接口比使用单一的总接口要好。
一个类对另一个类的依赖性应当是创建在最小的接口上的。
一个接口表明一个角色,不该当将不一样的角色都交给一个接口。没有关系的接口合并在一块儿,造成一个臃肿的大接口,这是对角色和接口的污染。
六、最少知识原则LKP(Least Knowledge Principle)
迪米特法则(Law of Demeter)又叫做最少知道原则(Least Knowledge Principle 简写LKP),就是说一个对象应当对其余对象有尽量少的了解,不和陌生人说话。英文简写为: LoD.
门面模式和调停者模式实际上就是迪米特法则的应用。
广义的迪米特法则在类的设计上的体现:
优先考虑将一个类设置成不变类。
尽可能下降一个类的访问权限。
谨慎使用Serializable。
尽可能下降成员的访问权限。