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 に答える