知识卡片
层级分解并非总是可行
内容
层级嵌套把子系统当黑盒封装起来,威力强大到几乎所有系统都在用,但并非放之四海皆准——同一块硬盘放进服务器里可以当成完全封装的黑盒,放进航天器里却不行:硬盘耗电会挤占稀缺电力,发热会让部件升温,转矩甚至扭转航天器姿态、改变轨迹,这些物理效应会”泄漏”出封装边界。判断一个部件能不能被干净地封装,要看它的副作用会不会溢出到边界之外——不是每个系统都能把子组件当成不关心内部细节的黑盒。
参考来源
- 位置:《恰如其分的软件架构》第11章《封装和分割》11.2节《层级和分割》(源文件:_epub-src/OEBPS/text00107.html)
- 结论依据:原文引用Daniel Dvorak比较硬盘在服务器和航天器中的使用情况,说明服务器中硬盘可被当作封装好的黑盒,但在航天器中耗电、发热、转矩这些物理影响无法被封装,说明不是每个系统都能被层级分解、把子组件当作封装好的黑盒。
- 原始内容:如果把相同的硬盘放在航天器中,你会发现那些影响是不能被封装的。硬盘会消耗本来就稀缺的电力,会使航天器的部件变热,扭转航天器,改变它的轨迹……不是每一个系统都可以被层级分解,也不是每个系统都能将子组件当做封装好的黑盒。