主要目标是避免在现有资料上使用最佳继承模型重复字段:
我有以下类层次结构:
class A
{
private String fieldA1;
private String fieldA2
// getters and setters
}
Class B extends A
{
private String fieldB1;
private String fieldB2;
// getters and setters
}
'用户'类将扩展A或B,并具有自己的字段。
假设现有API使用上述数据模型。 现在需要在A类中为新的API集添加新字段。 我有一定的限制,不修改现有的数据模型,因为它使用这些新字段公开或破坏现有的API。因此,需要通过扩展现有数据来创建新的数据模型,以便新API将它们与所有现有字段+新字段一起使用。我有以下解决方案,这可能不是最好的方法,因为它增加了字段的重复。
class A
{
private String fieldA1;
private String fieldA2
// getters and setters
}
Class B extends A implements Common
{
private String fieldB1;
private String fieldB2;
// getters and setters
}
Class NewA extends A
{
private String fieldNewA;
// getters and setters
}
Class NewB extends NewA implements Common
{
private String fieldB1;
private String fieldB2;
private String fieldNewB;
// getters and setters
}
Interface Common
{
//marker interface
}
请建议是否有更好的方法。
...谢谢
答案 0 :(得分:3)
我认为您需要退后一步,看看是什么导致您不断向现有类添加新字段。也许你应该只有一个字段,它是属性和值的集合。这样,任何新字段都只是集合中的另一个属性/值。您不必担心经常添加新字段。
答案 1 :(得分:0)
您的示例并不好,例如子类无法访问私有字段,并且不清楚您希望子类实现的目标。
如果您希望继承状态,则您的示例应使用protected或public字段,或显示继承的getter和setter方法。继承状态时,实现Common这样的接口是多余的。更多细节可能有助于澄清您的意图。
除此之外,是的,您可以按照描述扩展数据模型,以便将数据类型添加到现有类中。想要这样做的一个例子可能是希望从Triangle类创建一个Square类,需要添加一个新点。并且还需要改变行为以利用新领域。