1

我有一个具有低级编程的设备。我为每个新设备和升级提供版本号。我还有一个与这些设备通信的程序(以检索这些设备上的信息)。

例如。v1.2发送这种字符串:

v1.2|Time|Conductivity|Repetation|Time|Heat of First Nozzle|Pressure|EndOfMessage

但新版本的设备程序:

v1.3|Time|Conductivity|Repetation|Time|Humadity|1st Nozzle Heat;2nd Nozzle Heat|Pressure|EndOfMessage

我的测试应用程序将检索信息并更改此设备的操作有些操作会在v1.2设备中有一些没有。我认为策略设计模式似乎对这种情况很有用,但我不确定。我应该使用哪种设计模式来做到这一点?

4

2 回答 2

5

是的,这将是 Stategy 模式的一个很好的用例,尽管您也将使用 Factory 模式来创建特定的解析器实例。

然后,您的代码通常应如下所示:

public DeviceInfo Parse(InputData input)
{
    var version = versionParser.Parse(input);
    var concreteParser = parserFactory.CreateFor(version);
    var data = concreteParser.Parse(data);
    return data;
}

对于一个只有很少解析器的简单项目,你可以硬编码你的解析器工厂:

public class ParserFactory
{
    public static IParser<DeviceInfo> CreateFor(Version version)
    {
        // instantiate proper parser based on version
    }
}

根据项目的大小,您可能还决定为解析器使用插件模式(System.AddIn包含用于管理插件的有用类)。

于 2012-03-14T12:01:57.453 回答
0

我觉得策略和工厂方法将解决这个目的。

于 2012-03-14T11:51:56.590 回答