2012-03-14 12 views
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デバイスが含まれています。私は戦略デザインパターンがこのような状況に役立つと思ったが、わからない。これを行うにはどのデザインパターンを使用する必要がありますか?

答えて

0

私はファクトリーメソッドと一緒に戦略が目的を解決すると感じます。

5

はい、これはStategyパターンには適していますが、Factoryパターンを使用して特定のパーサーインスタンスを作成することもできます。

あなたのコードは、その後、一般的にこのようなものになります。プロジェクトの規模に応じて

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

:いくつかのパーサを持つ単純なプロジェクトのために

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

を、あなたはあなたのパーサファクトリをハードコーディングしますパーサーにプラグインパターンを使用することもできます(System.AddInにはプラグインの管理に役立つクラスが含まれています)。

+0

これはすばらしい答えです。あまり技術的でないhttp://en.wikipedia.org/wiki/Facade_patternを指摘したいと思います –