每日日报85——《软件设计》复习 - 一缕半夏微光

时间:2024-03-08 13:36:27

每日日报85——《软件设计》复习

一、面向对象七大原则(这些原则并不是孤立存在的,它们相互依赖,相互补充)

1.单一职责原则(SRP)一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中。(另一种定义:就一个类而言,应该仅有一个引起它变化的原因)。

单一职责原则是实现高内聚、低耦合的指导方针。

类的职责主要包括两个方面:数据职责和行为职责,数据职责通过其属性来体现,而行为职责通过其方法来体现。

实例:基于Java的C/S系统的“登录功能”的登录类。

2.开闭原则(OCP)一个软件实体应当对扩展开放,对修改关闭。(也就是说在设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展,即实现在不修改源代码的情况下改变这个模块的行为

开闭原则是面向对象的可复用设计的第一块基石,它是最重要的面向对象设计原则。

抽象化是开闭原则的关键。

开闭原则的核心是对系统进行抽象化,并且从抽象化导出具体化

实例:按钮类。

3.里氏代换原则(LSP)所有引用基类(父类)的地方必须能透明地使用其子类对象。(另一种定义:如果对每一个类型为S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有的对象o1都代换成o2时,程序P的行为没有变化,那么类型S是类型T的子类型

通俗表述:在软件中如果能够使用基类对象,那么一定能够使用其子类对象。

实例:加密类。

4.依赖倒转原则(DIP)高层模块不应该依赖低层模块,它们都应该依赖抽象。抽象不应该依赖于细节,细节应该依赖于抽象。(另一种表述:要针对接口编程,不要针对实现编程

如果说开闭原则是面向对象设计的目标的话,那么依赖倒转原则是实现面向对象设计的主要机制,依赖倒转原则是系统抽象化的具体实现。

依赖倒转原则的常用实现方式之一是在代码中使用抽象类,而将具体类放在配置文件中。

依赖倒转原则要求客户端依赖于抽象耦合,以抽象方式耦合是依赖倒转原则的关键。

(里氏代换原则是依赖倒转原则的基础)

实例:数据转换模块。

5.接口隔离原则(ISP)客户端不应该依赖那些它不需要的接口。(另一种定义:一旦一个接口太大,则需要将它分割成一些更细小的接口,使用该接口的客户端仅需知道与之相关的方法即可

接口隔离原则要求我们将一些较大的接口进行细化,使用多个专门的接口来替换单一的总接口。

实例:胖接口。

6.合成复用原则(CRP):(又称为组合/聚合复用原则(CARP))尽量使用对象组合,而不是继承来达到复用的目的。

合成复用原则是面向对象设计中非常重要的一条原则,为了降低系统中类之间的耦合度,该原则倡导多用关联关系,少用继承关系。

实例:数据库访问类。

7.迪米特法则(LoD):(又称为最少知识原则)一个软件实体应当尽可能少的与其他实体发生相互作用。

迪米特法则可分为狭义法则和广义法则。

实例:界面类、控制类和数据访问类

总结

(1)对于面向对象的软件系统设计来说,在支持可维护性的同时,需要提高系统的可复用性。

(2)软件的复用可以提高软件的开发效率,提高软件质量,节约开发成本,恰当的复用还可以改善系统的可维护性。

(3)单一职责原则要求在软件系统中,一个类只负责一个功能领域中的相应职责。

(4)开闭原则要求一个软件实体应当对扩展开放,对修改关闭,即在不修改源代码的基础上扩展一个系统的行为。

(5)里氏代换原则可以通俗表述为在软件中如果能够使用基类对象,那么一定能够使用其子类对象。

(6)依赖倒转原则要求抽象不应该依赖于细节,细节应该依赖于抽象;要针对接口编程,不要针对实现编程。

(7)接口隔离原则要求客户端不应该依赖那些它不需要的接口,即将一些大的接口细化成一些小的接口供客户端使用。

(8)合成复用原则要求复用时尽量使用对象组合,而不使用继承。

(9)迪米特法则要求一个软件实体应当尽可能少的与其他实体发生相互作用。

二、设计模式

1.定义:设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。

2.基本要素(7个):模式名称、问题、目的、解决方案、效果、实例代码和相关设计模式。

3.关键元素(4个):模式名称、问题、解决方案、效果。

4.分类

(1)按照目的模式是用来做什么的)可分为创建型主要用于创建对象)、结构型主要用于处理类或对象的组合)、行为型主要用于描述对类或对象怎样交互和怎样分配职责)。

(2)按照范围模式主要是用于类之间关系还是处理对象之间的关系)可分为类模式处理类和子类之间的关系,这些关系通过继承建立,在编译时刻就被确定下来,是属于静态的)和对象模式处理对象间的关系,这些关系在运行时刻变化,更具动态性)两种

5.GoF设计模式