
封装不是把细节神秘化,而是规定外部可以怎样接触一个系统。内部状态受到保护,外部操作只能经过有限、稳定的接口。这样,内部实现改变时,使用者不必同时改变;外部输入出错时,影响也较容易被截在边界内。
咖啡机的按钮只允许选择功能,使用者不能直接改动加热器和水泵的运行状态。维修人员仍可打开机器,因此封装不等于信息永远不可见;关键是不同角色拥有不同入口。
它与抽象相近但不相同。抽象决定讨论时忽略哪些细节,封装决定哪些细节不能被任意操作。封装也不是孤立:接口仍把系统连接起来。好的封装不是让部件互不相干,而是让依赖明确,使一次改动尽量停留在它所属的范围。
了解 Geoffrey Chen 的更多信息
订阅后即可通过电子邮件收到最新文章。