哪些设计模式对此有用
本文关键字:有用 设计模式 | 更新日期: 2023-09-27 18:27:40
我有一个具有低级别编程的设备。我会为每台新设备和升级提供版本号。我还有一个与这些设备通信的程序(用于检索这些设备上的信息)。
例如,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
设备中发生,有些则不会我认为策略设计模式似乎对这种情况有用,但我不确定。我应该使用哪种设计模式来完成此操作?
是的,这将是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包含用于管理插件的有用类)。
我觉得策略和工厂方法将解决这个问题。