软件构造知识小结
质量因素
外部质量因素:正确性、健壮性(对异常做出处理)、可拓展性、可复用性、兼容性、性能、可移植性、易用性、功能性、及时性。
内部质量因素:与代码相关,包括可读性和代码复杂性。
软件构造视图三个维度
构建时和运行时、时间点和时间段、代码层和构件层。
版本控制
commit直接到达本地仓库、push到达远程仓库
reset回到workspace , fetch由远程到本地,clone直接到workspace
通过指向文件的指针来标识改变,指针可以多次使用
ADT
构造器、生产器、观察器、变值器
RI,表示独立性:外在使用无需考虑内部实现
防御性副本:返回可变参数的副本
rep,表示不变性:描述合法的表示值
AF,抽象函数:表示空间到抽象空间的映射
理解 R 和 A 是表示不变性和抽象函数的集合本质
静态检查和动态检查
静态检查:类型不匹配、语法错误、函数名错误、参数数目错误、返回值类型错误。
动态检查:非法参数(除0)、数组越界访问、空指针
unmodifiable,只读不可修改。
等价性
观察等价性:对两个对象调用相同操作得到结果相同
==:代表引用等价性,对基本数据型使用
equals:对象等价性,对对象使用,必须重写(否则为引用等价性)
等价的对象必须有相同的hashCode。
可变类型关注行为等价性即可
参数化多态
参数化多态:泛型,不依赖实参类型
非参数化多态:overload,依赖于实参类型
协变和逆变
协变与返回值类型相关,具体的类有具体的返回值类型
子类抛出的异常必须是父类异常的子类型
逆变与参数相关,子类的参数必须相较于父类更抽象
继承和委派
委派发生在object层面,继承发生在class层面
如果只复用小部分方法可以用委派来实现
临时委派,使用其他类为参数,而不保存为域
Behavioral patterns
Strategy Pattern
有多种不同的算法来实现同一个任务,用户自行选择算法
为不同的实现算法构造抽象接口,使用时用户选择具体实例
Template Method
做事情的步骤一样,但具体方法不同
共性的步骤在抽象类内公共实现,差异化的步骤在各个子类中实现
本质上是抽象加继承重写的模式
Iterator Pattern
实现Iterable接口,允许客户端利用这个迭代器进行显式或隐式的迭代遍历
Visitor Pattern
访问者模式实际做的是创建一个使用其他类中数据的外部类
只需要在visitor实现中进行更改,就能修改操作逻辑
将数据和作用于数据上的某种/些特定操作分离开来