针对此次lab2,我仔细思考了整个架构中的spec,以下是我对次的梳理。
#hey
client与spec敲定合约后,对spec有制约作用,spec分为creator,producer,observer和mutator,这里对应每一个Rep都有一个implementation,spec其实是一个封装,他不是一个具体实现,而是一个抽象定义,因为我们要面向client,所以要保证表示独立性,不能让client能改变你的可变量,于是你应该将这些量全部设为private,甚至加一个final~~~~遇事不决,private final好吧。
要遵循R->RI->AF->的流程去实现代码,其中RI是判断是否合法,我们在构架时就应该提前考虑好RI是什么,即这些变量在变化的过程中应该满足哪样的约束,这样在写的时候可以专门写一个函数,在你实现每一个函数时末尾都加上,检查一下(当然如果跑不出来可以先去掉);AF的话是要将spec解释为client应该看到或需要的对象,切记,要保持表示独立性,这也是为什么我们要写set,get函数。