知识卡片
栈ADT的三个核心思想
内容
以栈(stack)这个经典抽象数据类型为例,能提炼出三条构建封装接口的核心思想:信息模型和行为模型须一致(push/pop的后置条件须用信息模型术语描述变化);模型对用户应该”刚刚好”,不多不少;只要结果与模型一致,内部实现可任意(数组、链表还是分布式缓存,用户毫无察觉)。套用到组件端口:选端口→写每个活动的签名及前后置条件→画状态变化的快照对→泛化成最小类型模型。
参考来源
- 位置:《恰如其分的软件架构》第11章《封装和分割》11.5节《创建封装接口》11.5.1-11.5.2小节(源文件:_epub-src/OEBPS/text00110.html)
- 结论依据:原文用栈ADT的push/pop方法及前后置条件说明信息模型与行为模型一致、模型对用户刚刚好、实现可任意三条核心思想,并给出把模块/组件当作ADT创建接口的四步流程:选端口、写签名和前后置条件、画快照对、泛化为类型模型。
- 原始内容:(1) 信息模型和行为模型应该是一致的……(2) 对用户而言,模型应该是刚刚好的……(3) 只要结果与模型一致,实现可以是任意形式的……(1)选择组件……上的端口。(2)对于端口上的每一个活动……写出它的签名和前后置条件。(3)画出一个或多个快照对……(4)泛化快照对,使之形成类型模型。