软件工程 第六章 模块设计

6 模块设计

面向对象的设计原则

单一职责原则

  • 定义: 在软件系统中一个类只负责一个功能领域的相应职责
  • 一个类承担的指责越多,被复用的可能性就越小。
  • 类的指责体现在两个方面:数据职责、行为职责
  • 高内聚、低耦合

单一职责原则实例:

在这里插入图片描述
转单一职责
在这里插入图片描述

开闭原则

  • 定义:一个软件实体,应该对扩展开放,对修改关闭。 模块可以在不被修改的前提下被扩展,实现在不修改源码的情况下改变这个模块的行文。
  • 软件实体可以指一个软件模块、一个有多个类组成的局部结构或一个独立的类。
  • 关键: 抽象化
  • 使用开闭原则,对灵活性喝可扩展性进行评价

实例:
在这里插入图片描述
根据开闭原则修改
在这里插入图片描述

里氏代换原则

  • 一个软件如果使用的是一个父类的话, 那么一定适用于其子类, 而察觉不出父类对象和子类对象的区别。 也即是说,在软件里面, 把父类替换成它的子类, 程序的行为不会有变化。
  • 子类型必须能够替换掉它们的父类型。

当满足以下条件的时候,一个子类对父类就是可替换的:

  1. 子类支持父类的所有方法,并且他们的签名是兼容的
  2. 子类的方法必须满足父类方法的规格说明。两个类的犯法不一定要完全相同,但是子类必须不违反父类放大的前置条件和后置条件。
  3. 子类必须保留父类中声明了的所有性质。

主要用途:确定社么时候一个而对象可以安全的被另一个对象所替换。

倒转依赖原则

  • 定义: 高层模块不应依赖底层模块,他们都应该依赖抽象。抽象不应该依赖于细节,细节应该依赖于抽象。
  • 要针对接口编程,不要针对实现编程
  • 代码要依赖抽象的类,而不依赖具体的类
  • 常用实现:在代码中使用抽象地类,将具体的类放在配置文件中
  • 关键: 抽象耦合

实例;
在这里插入图片描述
由于需求的变化,该系统可能需要增加新的数据源或者新的文件格式,每增加一个新的类型的数据源或者新的类型的文件格式,客户类MainClass都需要修改源代码,以便使用新的类,违背了开闭原则。现使用依赖倒转原则对其进行重构。

在这里插入图片描述

合成复用原则

  • 尽量使用对象组合而不是进程来达到复用目的
  • 合成复用原则就是指在一个新的对象里通过关联关系(包括组合关系和聚合关系)来使用一些已有的对象,使之成为新对象的一部分;新对象通过委派调用已有对象的方法达到复用其已有功能的目的
  • 继承复用: 简单,易于扩展。破环系统的封装性,从基类继承而来的是实现时静态的,不能在运行时改变,缺少灵活性。(白箱复用)
  • 组合/聚合复用:耦合度相对较低,选择性地调用成员对象,可以在运行时动态进行。(黑箱复用)
  • 组合/聚合:是系统更加灵活,降低类与类的耦合度。

迪米特法则

  • 每个软件单位对其他的单位都只有最少的知识,并且局限于那些和本单位密切相关的软件单位。
  • 一个软件实体应当尽可能少的与其他实体发生相互作用。
    在这里插入图片描述
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值