Какие шаблоны дизайна полезны для этого? - PullRequest
1 голос
/ 14 марта 2012

У меня есть устройство с низким уровнем программирования.Я даю номера версий каждые новые устройства и обновления.У меня также есть программа, которая связывается с этими устройствами (для получения информации об этих устройствах).

Например.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 устройстве, некоторые нет. Я думал, что шаблон разработки стратегии кажется полезным для этой ситуации, но я не уверен.Какой шаблон дизайна я должен использовать для этого?

Ответы [ 2 ]

5 голосов
/ 14 марта 2012

Да, это был бы хороший вариант использования для шаблона 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 содержит полезные классы для управления плагинами).

0 голосов
/ 14 марта 2012

Я чувствую, что Стратегия вместе с Фабричным методом решит цель.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...