2011-04-28 161 views
0

我有一个设计相关的问题w.r.t inheritence。继承的设计问题

Class A 

protected field1 
protected field2 
protected field3 

private List<B> 

B类应该包含field1,field2和field3 +确定它是自己的属性。

那是正确的,如果B可以被制成A的子类

这种关系在某种程度上并不觉得不错的方法 我的要求是, 当对象A字段1,字段2和字段3,我们应该确保对象A列表中的每个对象应具有相同的字段。

有没有其他方法可以确保上述条件。

谢谢。

+0

不应该是“......对象B列表中的每个对象应该具有相同的字段”吗? – Dynamicbyte 2011-04-28 10:25:36

回答

0

继承是一种选择。我会在这种情况下使用它。

另一个办法是组成,但你需要以某种方式暴露领域,这取决于使用意图

Class B { 

private A a 

// Constructor 
public B(A instanceOfA) { 
    this.a = instanceOfA 
} 

public setField1(value) { 
    this.a.field1 = value 
} 

... 

} 
0

你应该去总是成分,除非有严格的IS-A这两者之间的关系类。设计与构图更加灵活和可维护。

+0

您有一个有效的观点,但在这种情况下,我宁愿使用继承,因为它使更改更透明。否则,如果你改变了A类,你将不得不改变B类。此外,所有字段都是相同的,因此我认为这是一个“IS-A”关系 – Dynamicbyte 2011-04-28 14:18:59