我有一个关于继承问题,所以我将描述如下情况:继承和多重构造
我读包含日志的文本文件。 (每行一个日志) 每个日志线将具有以下格式: “日期类型描述”
然而,根据日志的“类型”,我将不得不解析“说明”不同,拉出不同的领域。
下面是一些例子:
5/1/2011 Information Field1, Field2, Field3
5/2/2011 Error Field1
- 所以,我试图做的是这样的:
- 获得一个线路输出日志
的-Parse根据图案为“日期类型说明”
-Look在‘类型’字段,并创建新的对象/解析需要说明
public class Log
{
public DateTime Date;
public String Type;
public String Description;
public Log(String line)
{
this.Date = GetDate();
this.Type = GetType();
this.Description = GetDescription();
}
}
public class InformationLog : Log
{
public String Field1;
public String Field2;
public String Field3;
public InformationLog(Log log)
{
this.Field1 = GetField1(log.Description);
this.Field1 = GetField2(log.Description);
this.Field1 = GetField3(log.Description);
}
}
public class Client
{
public void Main()
{
String line = ReadFileAndGetLine(); // Get a line from the file
Log log = new Log(line);
if(log.Type == "Information")
log = new InformationLog(log); // Is this right?
}
}
这是我想要的方式,但似乎这不是一个好习惯。 “log”变量将自身用作其自己的构造函数的参数。
我的问题是: 有没有这样做的标准方式?或者,这个实施有什么问题吗?
-
编辑:
另外,我应该提到:我的理由是,我会分析行一次走出日期和类型,然后再分析它,以获得更精细的细节。
我决定使用继承,所以我不必解析出Date和Type字段两次。
为什么不只是使用'Log'来做条件分析呢? – 2011-03-01 14:22:02
@Mr。失望:每种类型的日志都有不同的参数,所以我不想把“Field1,Field2,Field3等”如果它们不是必需的,则记录在“日志”中。 – Eric 2011-03-01 14:24:41
赞赏,但如果它们总是包含'Type'和'Description',那么这仍然可以发生在基类中。 – 2011-03-01 14:27:33