知识卡片

性质在代码中的字段与接口解释

普通读书笔记卡 · 1942.b

内容

同一个UML性质在代码里至少有两种解释:聚焦实现的私有字段,或更面向接口的存取方法。用OrderLine的price举例,即使price是实时计算出的值而非存储字段,调用者也无法分辨背后是字段还是计算逻辑。这正是封装的本质:信息隐藏让外部只关心接口提供了什么,不关心内部怎么实现。多值性质对应集合,应通过add/remove方法维护,不直接暴露内部集合,避免调用方绕过控制篡改成员。

参考来源

- 位置:《UML精粹:标准对象建模语言简明指南(第3版)》第3章《类图:基础》(源文件:_epub-src/EPUB/2.xhtml) - 结论依据:原文用OrderLine的price举例说明"这个例子里,没有价格的数据字段;相反,它是一个计算出来的值。但从OrderLine类的客户关心的角度看,它和一个字段是一样的。客户不能辨别什么是字段,什么是计算出来的。信息隐藏正是封装的本质",并说明多值属性应通过add/remove维护而非暴露裸集合。 - 原始内容:在这个例子里,没有价格的数据字段;相反,它是一个计算出来的值。但从OrderLine类的客户关心的角度看,它和一个字段是一样的。客户不能辨别什么是字段,什么是计算出来的。信息隐藏正是封装的本质……订单必须控制集合的成员;因此,它不应该将裸的集合传出。