软件构造不完全知识点整理C4-6

Chapter 4

1.代码的可读性/可理解性很多时候比效率/性能更重要,不可读/不可理解代码可能蕴含更多错误

2.SAP和SDP共同构成了包之间的“依赖倒置原则DIP”

SDP:依赖应该指向更稳定的方向

SAP:稳定性隐含着抽象

因此,依赖应该指向抽象的方向


Chapter 5

1.软件复用的两个方面:

-面向复用编程,开发出可复用的软件

-基于复用编程:利用已有的可复用软件搭建应用系统

2.软件复用的理由:

-降低成本和开发时间

-经过充分的测试,稳定、可靠

-标准化,在不同应用中保持一致

3.一个有很高的复用性的代码应该具备的特点:

-小、简单

-与标准兼容

-灵活可变

-可扩展

-泛型、参数化

-模块化

-变化的局部性

-稳定

-丰富的文档和帮助

... ... 

4.代码复用类型:

白盒复用:源代码可见,可修改和扩展

黑盒复用:源代码不可见,不能修改

5.控制反转:

由第三方的容器来控制对象之间的依赖关系,而非传统实现中由代码直接操控

控制权由代码中转到了外部容器,带来的好处就是降低了对象之间的依赖程度,提高灵活性和可维护性

6.委派/委托:一个对象请求另一个对象的功能

如果子类只需要复用父类中的一小部分方法,可以不需要使用继承,而是通过委派机制来实现

7.子类型多态:客户端可以用同意的方式来处理不同的类型的对象

8.LSP原则:

-更强的不变量

-更弱的前置条件

-更强的后置条件


Chapter 6

1.可维护性:可扩展性、灵活性、可适应性、可管理性、支持性

2.评估模块性的5个标准:

可分解性、可组合性、可理解性、可持续性、出现异常之后的保护

3.模块化设计5个规则:

直接映射、尽可能少的接口、尽可能小的接口、显示接口、信息隐藏

4.OO设计原则:SOLID

SRP:单一责任原则

OCP:开放-封闭原则

LSP:Leskov替换原则  子类型必须能够替换其基类型

DIP:依赖转置原则

ISP:接口聚合原则

5.SRP:责任:变化的原因

不应该有多于一个的原因使得一个类发生变化

6.OCP:模块的行为应是可扩展的,从而该模块可表现出新的行为以满足需求的变化,但模块自身的代码不应该被修改

对扩展性的开放,对修改的封闭

7.耦合:是对模块之间的从属关系的一种测定

如果两个模块中的一方改变了那另一方要跟着改变

耦合的程度由模块之间的借口(quantity)、每个借口的复杂性(由交流的类型决定)(quality)

8.凝聚、聚合:是对一个模块的可能性/和功能有关的健壮性的一种测定

9.好的设计:high cohesion low coupling

10.ISP:客户端不应该依赖于他们不需要的方法

11.DIP:抽象的模块不应依赖于具体的模块,具体应依赖于抽象

12.工厂方法模式:

创建对象不指定准确的类

13.抽象工厂模式:提供接口以创建一组相关/相互依赖的对象、但不需要指明其具体类

创建的不是一个完整产品,而是产品族

14.构造器模式:创建复杂对象,包含多个组成部分

15.桥接模式:

是OOP最基本的structural pattern,通过delegation + inheritance建立两个具体类之间的关系

16.组合模式:目的是在同类型的对象之间建立起树形层次结构

一个上层对象可包含多个下层对象

17.迭代器:以遍历的方式访问集合数据而无需暴露其内部表示,将遍历这项功能delegate到外部的iterator对象

18.visitor:在特定的ADT上执行某种特定操作,但该操作不在ADT内部实现,而是delegate到独立的visitor对象,客户端可灵活扩展/改变visitor的操作算法,而不影响ADT

19.Mediater:多个对象之间要进行交互,而是通过mediator实现消息的广播,从而将对象之间松散耦合,利于变化 

猜你喜欢

转载自blog.csdn.net/hwruirui/article/details/80781174