知识卡片

帕纳斯模块隐藏可能变化的秘密

普通读书笔记卡 · 1958.k.6

内容

一个模块只对内部数据做简单get/set,表面上”封装”了,实际什么设计秘密都没藏住——换内部数据结构或算法用户照样受影响。David Parnas(1972)的做法:设计接口时先假想两套完全不同的内部方案A和B,都能满足同一接口;做得到,说明真正的设计决策被封装在接口背后了,换主意用户也不会察觉。这类”帕纳斯模块”隐藏的是最容易变化的细节。现实中很少被严格执行——加个新字段往往牵动一串模块。

参考来源

- 位置:《恰如其分的软件架构》第11章《封装和分割》11.4节《有效封装》(源文件:_epub-src/OEBPS/text00109.html) - 结论依据:原文介绍David Parnas 1972年提出的帕纳斯模块方法——设计模块时假想两种不同方案A、B都能实现同一接口,说明设计秘密被封装在接口背后,并指出实践中这一建议很少被严格采纳。 - 原始内容:Parnas建议,你要在设计模块和接口时,让这两种方案都能实现相同的API。这表明你正在隐藏设计秘密……帕纳斯模块(Parnas module)隐藏了最小化耦合的秘密,而不仅仅是把相关的代码组织在一起。然而,在实践中这个建议却很少被采纳。