我正在设计一个基于生产者/消费者的应用程序,并且我坚持在类表示中表示生产者生成的任务。
实际的问题是这样的:生产者可以生产StandaloneTask
一个消费者可以直接消费的产品,或者它可以生产一个CompressTask
必须经过第一个的产品,然后将TaskDecompressor
其首先提取成许多StandaloneTask
消费者可以消费的产品。
StandaloneTask
由于和之间有很多共性CompressTask
,所以我创建了一个名为的基类TaskBase
,其中包含所有这些通用信息。
class abstract TaskBase
{
}
class StandloneTaskType1: TaskBase
{
}
class StandloneTaskType2: TaskBase
{
}
.
.
.
class StandloneTaskTypeN: TaskBase
{
}
任务的解压如何工作?一个任务可以有一个或多个需要在运行时填写的参数。压缩任务由一个带有参数的任务和有关如何获取需要在这些参数中填充的值的其他信息组成。获取值后,TaskDecompressor
假设将所有这些值填充到参数化任务中以生成一个或多个独立任务。
我创建了一个CompressTask
类如下。
class CompressTask: TaskBase
{
TaskBase task;
//runtime parameters
}
CompressTask
现在,它的派生自它对我来说看起来很奇怪,TaskBase
它还包含一个TaskBase
. 有这样的课是正确的吗?或者有没有更好的给定案例的类表示。