0

スクリプトと呼んでいるファイルから入力を受け取るプログラムを作成しています。スクリプトには、一連の情報が含まれているだけです。将来的には、各スクリプトにさらに多くの情報を含める必要があるため、各スクリプトをバージョン番号に関連付けます。

スクリプトファイルの情報は、EntityStatePduと呼ばれる特定のクラスに完全に含めることができます(この質問では詳細は重要ではありません)。そこで、次のクラスを作ることにしました。

1)抽象クラススクリプト
2)クラスScriptV1はスクリプトを拡張します
3)クラスScriptV2はスクリプトを拡張し
ます4)..。

各スクリプトファイルをバージョン情報で開始しました。したがって、バージョン1のスクリプトは「scriptV1」で始まり、バージョン2のスクリプトは「scriptV2」で始まります。さまざまなスクリプトバージョンをスクリプトクラスに抽象化したいと思います。

したがって、理想的には、呼び出しScript.FromFile("scriptVersion1.txt")によって有効なScriptV1オブジェクトが返され、呼び出しによって有効なScriptV1オブジェクトが返されるように、FromFileというスクリプトクラスにファクトリメソッドがScript.FromFile("scriptVersion2.txt")必要です。このFromFileメソッドでファイルを読み取り、ファイルの先頭を調べてバージョンを判別し、適切なScriptサブクラスをインスタンス化する必要があります。これにより、クラスのユーザーは、バージョンに関係なく、任意のスクリプトファイルを使用できるようになります。

FromFileこのファクトリメソッドをどのように記述しますか?別のクラスのデザインを提案しますか?ある種のデザインパターン?

ありがとう!

4

1 に答える 1

0

静的変数をScriptクラスに追加して、文字列( "scriptV1"など)から適切なクラスのインスタンスへのマップを含めます。FromFileメソッドで、文字列を抽出し、マップで検索し、インスタンスのクローンを作成して返します。初期化段階として、サブクラスは適切な文字列の下でマップに自分自身のインスタンスを登録する必要があります。

于 2012-05-09T02:00:59.933 に答える