1、设计原则简介
-
概述
:用于评价一个设计模式的使用效果的重要指标之一 -
类型
:- 单一职责原则
- 开闭原则
- 里氏替换原则
- 依赖倒置原则
- 接口隔离原则
- 合成复用原则
- 迪米特法则
2、单一职责原则
-
概述
:用于控制类的粒度大小,一个类只负责一个功能领域中的相应职责
。 -
地位
:是实现高内聚、低耦合的指导方针 -
示例
:开发人员针对某CRM(客户关系管理)系统中客户信息图形统计模块提出了如图所示的初始设计方案结构图, -
分析
:CustomerDataChart 类承担了太多的职责,违背了单一职责原则。因此需要对该类进行拆分,使其满足单一职责原则- DBUtil:负责连接数据库,包含数据库连接方法getConnection()
- CustomerDAd:负责操作数据库中的Customer 表,包含对Customer 表的增/删/改/查等方法,如findCustomers()
- CustomerDataChart:负责图表的生成和显示,包含方法createChart()和displayChart()
3、开闭原则
-
概述
:一个软件实体应当对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况进行扩展 -
地位
:是面向对象的可复用设计的第一块基石 -
运用
:为了满足开闭原则,需要对系统进行抽象化设计,抽象化是开闭原则的关键。在 Java、C# 等编程语言中,可以为系统定义一个相对稳定的抽象层。而将不同的实现行为移至具体的实现层中完成。
4、里氏替换原则
-
概述
:所有引用基类(父类)的地方必须能透明地使用其子类对象 -
地位
:是实现开闭原则的重要方式之一 -
运用
:在运用里氏替换原则时,应该将父类设计为抽象类或者接口,让子类继承父类或实现父类接口,并实现在父类中声明的方法。
5、依赖倒置原则
-
概述
:抽象不应该依赖于细节,细节应该依赖于抽象。换言之,要针对接口编程,而不是针对实现编程。 -
地位
:是面向对象设计的请要实现机制之一 -
运用
:要求在程序代码中传递参数时或在关联关系中,尽量引用层次高的抽象层类,即使用接口和抽象类进行变量类型声明、参数类型声明、方法返回类型声明,以及数据类型的转换等,而不要用具体类来做这些事件。
6、接口隔离原则
概述
:使用多个专门的接口,而不使用单一的总接口
7、合成复用原则
-
概述
:尽量使用对象组合,而不是继承来达到复用的目的 -
运用
:合成利用原则就是在一个新的对象里通过关联关系(包括组合关系和聚合关系)来使用一些已有的对象,使之成为新对象的一部分。
8、迪米特法则
-
概述
:一个软件实体应当尽可能少地与其他实体发生相互作用 -
地位
:如果一个系统符合迪米特法则,那么当其中某一个模块发生修改时,就会尽量少地影响其他模块,扩展会相对容易 -
运用
:不要和"陌生人"说话,只与你的直接朋友通信- 当前对象本身(this)
- 以参数形式会传入到当前对象方法中的对象
- 当前对象的成员对象
- 如果当前对象的成员对象是一个集合,那么集合中的元素也都是朋友
- 当前对象所创建的对象