在对课件和实验进行总体复习后,针对其中的重难点以及此前忽视的点进行复习补充和描述:
1.spec与测试优先
良好的架构基于全面标准的规约以及测试优先的开发,可将开发步骤概况性的分为三步:
1.设计软件架构,编写相应的spec
2.编写符号spec的测试用例
3.编写代码,执行测试,根据测试问题修改代码,再次执行测试,直到通过测试。
2.ADT的四种操作
1.Creator: t*->T
构造器, 利用其它与该类无关的参数或无参数构造一个该类对象,如构造函数或静态函数
2.Producer: T+,t* ->T
生产器, 根据已有的该类对象和其它参数(可无)生成一个新的该类对象,如concat , substring , toUpperCase等方法
3.Observer: T+, t* -> t
观察器 ,由其它参数(可无)获取已有的该类对象中的信息,该信息类型与该类对象相同,如length,charAt等
4.Mutators: T+, t* -> void | t | T
变值器, 由其它参数(可无)对已有的该类对象的信息或对象本身进行更改,返回值类型取决与实现内容,如list对象的add,put 操作。
不同操作的测试方式:
测试Creator,Producer,Mutators时调用Observer观察操作结果是否正确。
测试Observer时调用另外三类操作产生或改变对象,来看结果是否正确。
基于不同操作特性,可以来判断ADT是否表示泄露:
三个检查ADT是否保持不变量的标准:
1.由Creator和Producer创建
2.由Mutators和Observer保存
3.不发生rep的泄露
3.设计一个良好的ADT
想要设计一个良好的ADT,需要选择合适的方法,设计其行为规范spec,其具体由如下三个设计规则:
1.设计简介、操作一致
2.足以支持client对数据所作的所有操作需要,且用操作满足client需要的难度要低
3.要么抽象、要么具体,不要混合 -- 要么针对抽象设计,要么针对具体应用进行设计。
4.使用静态工厂方法代替普通的构造器
对于类而言,在我们需要获取一个实例时,最传统的方法都是通过通过调用构造函数new出一个新的实例化对象。而静态工厂方法则是另外一种不通过new来获取一个实例的方法,我们可以通过一个类中公有的静态方法,来返回一个实例。
该类构造方法具有如下优势:
1.静态工厂方法不用在每次调用的时候都创建一个新的对象
2.静态工厂方法可以返回原类型的任何子类型对象
3.静态工厂方法所返回的对象可以随着每次调用而发生变化,这取决于参数值
4.静态工厂方法返回的对象所属的类,在编写包含该静态工厂方法的类时可以不存在
5.在接口中使用Default方法
一般接口中定义的方法都有实现它的具体类来完成,但对于某些共性的功能,可以通过default方法在接口中统一实现,无需后续重复实现。这还可用于增量式的为接口增加额外的功能而不破坏原有已实现的类。
文章强调了spec与测试优先的开发流程,介绍了ADT的四种操作(构造器、生产器、观察器、变值器)及其测试方法。同时讨论了如何设计良好的ADT,包括选择合适的方法、保持不变量和设计规则。此外,提到了静态工厂方法的优势,如灵活性和性能优化,以及接口中使用Default方法进行功能扩展的可能性。
199

被折叠的 条评论
为什么被折叠?



