1.针对接口编程
接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现.
接口是对抽象的抽象
针对接口编程也称为面向接口编程,将设计和实现分开,使用时只需引用借口即可,用于系统各部分的解耦合.
2.单一职责原则
定义:一个类的功能要单一,只做与它相关的事情.
遵循单一职责原则会给测试带来极大的方便.
违背单一职责原则会降低类的内聚性,增强类的耦合性.
3.开放封闭原则
定义:一个软件实体应当对扩展开放,对修改关闭.开放封闭原则是面向对象原则的核心.
封装变化,以来接口和抽象类,而不要依赖具体实现类.要针对接口和抽象类编程,不要针对具体实现编程.
我们无法控制变化,但我们可以预测哪里会发生变化,把要变化的地方抽象起来,这样面临变化的时候我们就可以尽量的扩展.
4.里氏代换原则(LSP)
定义:一个软件实体如果使用的是基类的话,那么也一定适用于其子类.反过来不成立.简而言之:子类必须能够替换成它们的基类.
里氏代换原则是开放封闭原则的具体规范,因为实现开放封闭原则的关键是进行抽象,而继承关系又是抽象的一种具体实现,这样LSP就可以确保基类和子类关系的正确性,进而为实现开放封闭原则服务.
5.迪米特法则(LOD)
定义:一个对象应当对其他对象尽可能少的了解,又叫最少指示原则(Least Knowledge Principle)
一个模块设计的好坏的一个重要标志就是该模块在多大程度上讲自己的内部数据与实现的有关细节隐藏起来.
运用:
1.创建弱耦合的类
2.降低成员的访问权限
3.尽量设计成不变的类
4.一个类对其他类的对象的应用应该降到最低
5.尽量限制局部变量的有效范围
6.合成聚合复用原则(CARP)
定义:一个新的对象中使用原来已经存在的一些对象,是这些原来已经存在的对象称为新对象的一部分,新的对象通过向这些原来已经具有的对象委派相应的动作或者命令达到复用已有功能的目的.即尽量使用合成和聚合,尽量少使用继承.