如何实现所有使用相同变量的类
我有6个类,它们都是文档类型。所有文档类型都有相同的8个字段。有一个类只包含这8个字段。其余的课程有更多的领域。其中一些类具有相同的字段(8个字段旁边)。如何实现所有使用相同变量的类
实施例:
类文件:字段1〜8
类形式:字段1〜8和场9和10
类WorkInstruction:字段1〜8和场9和10
分类程序:字段1到10和字段11
希望这将清楚表明我的观点。
我的问题是,实现这个的最好方法是什么?我应该创建一个或多个接口,还是应该使用抽象类?
日Thnx
要么使文献基类型表等,或者使一个形式有额外的字段和一个单独的文档(即,使用的组合物的,而不是继承)的引用。在这种情况下,这听起来像继承很可能是最好的选择,但它实际上取决于你想用它做什么。你有代码可以处理任何文档,包括Form,WorkInstruction等?
编辑:例如,假设您有一个用户界面控件,它可以显示任何文档的公共部分 - 即常见的8个字段。这将需要一个Document实例。您可以可能希望能够直接向其传递Form或WorkInstruction - 在这种情况下,最好从Document派生。或者,在呈现Form或WorkInstruction时,可以分别创建在文档部件中传递的控件实例。也就是说,它的这之间的差异(在C#中 - 你没有指定你的语言兴趣):
class Form : Document { ... }
// Later on
Controls.Add(new DocumentDisplay(form));
这:
class Form
{
private Document Document { get; set; }
// Other stuff
}
// Later on
Controls.Add (new DocumentDisplay(form.Document));
不知道你的设计的其余部分,它的很难推荐一个或另一个。我通常比继承更喜欢构图,但是这更像是一种自然的继承情况。
旧学校的答案是创建一个共享字段和继承类。
时髦的答案是创建一个拥有这些恶魔并且成为其成员的类。
如果您每次都会更改基础,那么继承会在类之间创建更多的依赖关系,这被认为是不好的做法。
在一个简单的情况下,它并没有真正的差异。但是如果你开始向这些领域添加行为,它可能会。
信息太少给出一个明确的答案
如果这些对象共享的仅仅是数据的属性......我会用这样的事情。
class Document
{
List<Field> m_Fields;
public void AddField(Field f) {... }
public void AddFields(Field[] f) {... }
}
class DocumentFactory()
{
public static Document GetDocument()
{
Document d = new Document();
d.AddFields(GetDocumentFields()); // private helper .. returns fields 1-8
return d;
}
public static Document GetForm()
{
Document d = new Document();
AddDocumentFields(d);
d.AddField(FIELD_9);
d.AddField(FIELD_10);
}
// and so on..
}
的作品不管类型的文档的任何代码,进入文档类。
如果除此之外,您还有专门的/基于特定对象类型的行为,您需要生长一个继承类型层次结构(如Jon所说,它看起来像名称中的IS-A关系)。
您的描述中的“t/m”是什么意思? – 2008-12-12 09:44:29
对不起,这是荷兰语,但我的意思是直到和 包括。我编辑了我的文本,thnx :) – Martijn 2008-12-12 09:56:03