标签:rac justify 保护 条件 客户 变化 com 外部 def
软件构造 第三章第三节 抽象数据型(ADT)
Creators(构造器):
创建某个类型的新对象,?个创建者可能会接受?个对象作为参数,但是这个对象的类型不能是它创建对象对应的类型。可能实现为构造函数或静态函数。(通常称为工厂方法)
t* -> T
例子:Integer.valueOf( )
Producers(生产器):
通过接受同类型的对象创建新的对象。
T+ , t* -> T
例子:String.concat( )
Observers(观察器):
获取抽象类型的对象然后返回一个不同类型的对象/值。
T+ , t* -> t
例子:List.size( ) ;
Mutators(变值器):
改变对象属性的方法 ,
变值器通常返回void,若为void,则必然意味着它改变了对象的某些内部状态;当然,也可能返回非空类型
T+ , t* -> t || T || void
例子:List.add( )
Representation Independence
表示独立性:client使用ADT时无需考虑其内部如何实现,ADT内部表示的变化不应影响外部spec和客户端。
除非ADT的操作指明了具体的前置条件/后置条件,否则不能改变ADT的内部表示——spec规定了 client和implementer之间的契约。
Invariance和表示泄露(Rep exposure):
-一个好的抽象数据类型的最重要的属性是它保持不变量。一旦一个不变类型的对象被创建,它总是代表一个不变的值。当一个ADT能够确保它内部的不变量恒定不变(不受使用者/外部影响),我们就说这个ADT保护/保留自己的不变量。
-Defensive Copy
做出具体的解释:每个rep value如何映射到abstract value
Safety from Rep Exposure
标签:rac justify 保护 条件 客户 变化 com 外部 def
原文地址:https://www.cnblogs.com/masteryellow/p/9214293.html