我有很多不同格式的日志文件。每个日志文件都有不同类型的数据,我可以从中获取日志消息的时间和来源以及其他详细信息。
我需要将所有日志消息组合成一个具有我自己格式的大日志文件,并且应该按日志消息的时间进行排序。
我还计划为该工具实现GUI和命令行界面。
战略模式是否是一个很好的设计策略?既然我想开发一个CUI以及一个GUI,那么策略模式是否合适呢?
答案 0 :(得分:1)
可以将问题分成多个较小的问题。
日志文件读取
日志文件可以来自多个来源。它可以是本地文件,也可以是网络上的某个位置。读者可能是有状态的对象,它们记住文件大小和它们当前所处的位置。日志文件位置的一个示例可以是http://myserver.mycompany.com/logs/job.log
可以为读者创建接口,然后为多个实现创建接口。给定日志文件位置,可以利用Factory模式创建正确的实现。
日志文件解析 一旦原始数据在某个内存块中可用,就应该对其进行解析。这里可以使用Composite模式:log有多个日志行,它有多个日志列。
合并日志文件 当有多个已解析的日志可用时,需要将它们组合成一个。假设每个日志行都有一个带有时间戳的日志列,按时间列对行进行排序非常简单。
显示合并日志 假设在这个阶段,我们已经获得了一个带有行和列的组合日志,很容易在选择的显示技术中使用这个数据模型,无论是控制台还是GUI。
答案 1 :(得分:0)
似乎问题的唯一可变部分是输入文件的格式。这意味着您可以使用factory来获取正确的解析器。
最简单形式的工厂看起来与此类似
if(someIdicatorFromFile.equals("oneTypeOfFormat"){
return new ParserForFormatOne();
}
else if(someIdicatorFromFile.equals("otherTypeOfFormat"){
return new ParserForOtherFormat();
}
parser.parse()
。解析器应返回一些通用格式。