我有一个接口IMessage
和一个类,它有几种创建不同类型消息的方法,如下所示:
class MessageService
{
IMessage TypeAMessage(param 1, param 2)
IMessage TypeBMessage(param 1, param 2, param 3, param 4)
IMessage TypeCMessage(param 1, param 2, param 3)
IMessage TypeDMessage(param 1)
}
我不希望这个类完成创建这些消息的所有工作,所以它只是委托给 a MessageCreatorFactory
,它根据给定的类型产生一个IMessageCreator
(基于消息类型 A、TypeB、TypeC 等的枚举)
interface IMessageCreator
{
IMessage Create(MessageParams params);
}
所以我有 4 个实现IMessageCreator
:TypeAMessageCreator
, TypeBMessageCreator
, TypeCMessageCreator
,TypeDMessageCreator
我对此表示满意,除了因为每种类型需要不同的参数,我必须创建一个MessageParams
对象,其中包含 4 个不同参数的 4 个属性,但每个IMessageCreator
.
有没有替代方案?我的另一个想法是将参数数组作为 Create 方法中的参数,但这似乎更糟,因为您不知道参数是什么。或者在接口中创建多个 Create 重载,如果它们不适合该特定实现,则让它们中的一些抛出异常(即,您调用了需要更多参数的方法,因此您应该调用其他重载之一。)
这看起来好吗?有更好的解决方案吗?