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