我现在正在阅读的书“Head First OOA & D”。有代码的例子。我在接受下一个解决方案时遇到问题:Head First OOA&D - 在实体层次树中实现属性
如果系统中存在实体层次结构,则建议使用属性映射而不是写入整个类树。
例如: 股与属性的地图:
public class Unit {
private UnitType type;
private Map<String, Object> properties;
}
凡UnitType
是一个枚举。
树的单位:
public class Unit {
private int healthVolume;
}
class Soldier extends Unit{
private int strength;
}
class Tank extends Unit{
private int armorAmount;
}
是的,也有观点认为在第一种情况是,没有工作和额外类添加新的单位的可能性。 例如,如果我有100个单元类型:
第一种情况:我必须写1个类。
第二种情况:我必须写至少101个班。
但是这String
from Map<String, Object>
似乎并不好,因为硬编码的属性名称不是一个好的风格。添加一个枚举会略微改善代码,但也有这个Object
,这似乎是非常奇怪的时候有这么多的泛型。
你有什么想法,该设计如何改进? 提前感谢您的帮助。