我正在构建一个能够解析标准化文件格式的解析器库。如果解析失败,用户应该能够获得有关解析失败原因的日志信息(即文件与标准的不同之处)。
我不确定如何实现这一点,我想在日志的解析时间内触发事件可能会很方便,但是存储日志信息也是个好主意。
我应该使用工厂模式还是基于对象实现解析?
工厂模式:
FileModel.ParserInformation += OnParserInformation;
var myModel = FileModel.Parse(@"C:\temp\myfile.file");
FileModel.ParserInformation -= OnParserInformation;
//Parsing failed
if(myModel == null)
{
// Handle case
}
else
{
// Continue work
}
临:
缺点:
对象基础:
var myModel = new FileModel();
myModel.ParserInformation += OnParserInformation;
myModel.Parse(@"C:\temp\myfile.file");
myModel.ParserInformation -= OnParserInformation;
if(myModel.HasData)
{
// Continue work
}
else
{
// Handle errors
var logs = myModel.GetLogInformation();
}
临:
缺点:
有什么想法吗?