知识卡片
只读与冻结的区别
内容
{readOnly}标记性质只能被客户读取、不能被客户更新,但内部或其他机制仍可能改变它;{frozen}(来自UML 1、UML 2已删除但作者仍在用)标记的性质在对象整个生命期内都不能改变,通常称为不可变。二者容易混淆但语义层级不同:{readOnly}限制谁能改,{frozen}限制任何时候都不能改。{frozen}既可标记单个性质,也可标记整个类,表示所有实例的所有性质都冻结。
参考来源
- 位置:《UML精粹:标准对象建模语言简明指南(第3版)》第5章《类图:进阶概念》(源文件:_epub-src/EPUB/4.xhtml)
- 结论依据:原文说明"{readOnly}关键词。你使用这个关键词来标记客户只能读取不能更新的性质",并区分"如果性质在对象的生命期内不能改变,它就是冻结的(frozen)……你既可以标记个别性质为冻结的,也可以把该关键词应用到一个类"。
- 原始内容:我描述了{readOnly}关键词。你使用这个关键词来标记客户只能读取不能更新的性质。和它相似但不同的是来自UML 1的{frozen}关键词。如果性质在对象的生命期内不能改变,它就是冻结的(frozen);这样的性质经常被称为不可变的。