简体   繁体   中英

Which design patterns are useful to do this?

I have a device which have low level programming. I am giving version numbers every new devices and upgrades. I also have a program which communicate with these devices (to retrieving information on these devices).

For eg. v1.2 sends this kind of string:

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

but new version of device program:

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

My test application will retrieve information and change the operation of this device. Some operations will have in v1.2 device some not. I thought strategy design pattern seems useful for this situation but I'm not sure. Which design pattern should I use to do this?

Yes, this would be a good use-case for the Stategy pattern, although you will also use the Factory pattern to create a specific parser instance.

Your code should then generally look something like this:

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

For a simple project with few parsers, you may hardcode your parser factory:

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

Depending on the size of your project, you may also decide to use a plugin pattern for your parsers ( System.AddIn contains useful classes for managing plugins).

我觉得策略与工厂方法一起可以解决目的。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM