【发布时间】:2011-02-17 22:43:10
【问题描述】:
我正在阅读这本书(Head First Object Oriented Design & Analysis)。在第 5 章中有一个建议,我想对它提出一些其他的建议。书上说:
"当你有一组属性时 因对象而异,请使用 集合,就像一个地图来存储那些 动态属性。”
还有一些解释为什么要这样做:
“你会从 你的课程,避免不得不 新属性时更改代码 已添加到您的应用中”。
我确实了解这种方法的优点,但不是也有缩小尺寸吗?我的意思是如果我使用映射来存储这些信息(在示例中它是一个字符串到枚举映射)并提供一个 getProperty(String) 方法来访问,那么这个方法的调用者实际上必须知道哪些字符串是允许的。我不喜欢这个。我的意思是,您当然可以争辩说可以在 javadoc 中说明允许输入的内容。
这真的是处理这类问题的方法吗?还有其他选择吗?我知道用继承来做这件事是不好的,因为有大量的子类,而且这些子类不会覆盖任何东西,只是添加新的属性,这在我看来真的不是那么好。
【问题讨论】: