プロデューサー/コンシューマー ベースのアプリケーションを設計していますが、プロデューサーによって生成されたタスクをクラス表現で表現することに行き詰まっています。
実際の問題は次のようになります。生産者はStandaloneTask
、消費者が直接消費できる を生成できます。または、消費者が消費できる数に最初に抽出するCompressTask
必要がある を生成できます。TaskDecompressor
StandaloneTask
StandaloneTask
と の間には多くの共通点があるため、この共通情報をすべて含むCompressTask
と呼ばれる基本クラスを作成しました。TaskBase
class abstract TaskBase
{
}
class StandloneTaskType1: TaskBase
{
}
class StandloneTaskType2: TaskBase
{
}
.
.
.
class StandloneTaskTypeN: TaskBase
{
}
タスクの解凍はどのように機能しますか? タスクには、実行時に入力する必要がある 1 つ以上のパラメーターを含めることができます。圧縮タスクは、パラメーターを含むタスクと、それらのパラメーターに入力する必要がある値を取得する方法に関するその他の情報で構成されます。値を取得した後、TaskDecompressor
これらすべての値をパラメーター化されたタスクに入力して、1 つ以上のスタンドアロン タスクを生成すると想定されます。
CompressTask
以下のようなクラスを作成しました。
class CompressTask: TaskBase
{
TaskBase task;
//runtime parameters
}
CompressTask
さて、が から派生しTaskBase
、 のインスタンスも含まれていることは、私には非常に奇妙に見えますTaskBase
。そのようなクラスを持つことは正しいですか?または、特定のケースのより良いクラス表現がありますか。