<>6 模块设计

<>面向对象的设计原则

<>单一职责原则

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

转单一职责

<>开闭原则

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

根据开闭原则修改

<>里氏代换原则

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

* 子类支持父类的所有方法,并且他们的签名是兼容的
* 子类的方法必须满足父类方法的规格说明。两个类的犯法不一定要完全相同,但是子类必须不违反父类放大的前置条件和后置条件。
* 子类必须保留父类中声明了的所有性质。
主要用途:确定社么时候一个而对象可以安全的被另一个对象所替换。

<>倒转依赖原则

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


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

<>合成复用原则

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

* 每个软件单位对其他的单位都只有最少的知识,并且局限于那些和本单位密切相关的软件单位。
* 一个软件实体应当尽可能少的与其他实体发生相互作用。

技术
下载桌面版
GitHub
Gitee
SourceForge
百度网盘(提取码:draw)
云服务器优惠
华为云优惠券
腾讯云优惠券
阿里云优惠券
Vultr优惠券
站点信息
问题反馈
邮箱:[email protected]
吐槽一下
QQ群:766591547
关注微信