相关疑难解决方法(0)

用于处理多种消息类型的设计模式

我已经把GOF放在我的桌子上了,我知道必须有某种设计模式来解决我遇到的问题,但是我无法弄明白.

为了简单起见,我改变了我正在使用的一些接口的名称.

所以这就是问题,在线路的一侧,我有多个服务器发送不同类型的消息.在电线的另一端,我有一个客户端,需要能够处理所有不同类型的消息.

所有消息都实现相同的公共接口IMessage.我的问题是,当客户端获得新的IMessage时,它如何知道它收到的IMessage类型?

我想我可以做类似下面的事情,但这只是感觉太糟糕了.

TradeMessage tMessage = newMessage as TradeMessage;
if (tMessage != null)
{
    ProcessTradeMessage(tMessage);
}

OrderMessage oMessage = newMessage as OrderMessage;
if (oMessage != null)
{
    ProcessOrderMessage(oMessage);
}
Run Code Online (Sandbox Code Playgroud)

第二个想法是向IMessage添加一个名为MessageTypeID的属性,但是这需要我写下面的内容,这也很糟糕.

TradeMessage tMessage = new TradeMessage();
if (newMessage.MessageTypeID == tMessage.MessageTypeID)
{
    tMessage = newMessage as TradeMessage;
    ProcessTradeMessage(tMessage); 
}

OrderMessage oMessage = new OrderMessage();
if (newMessage.MessageTypeID == oMessage.MessageTypeID)
{
    oMessage = newMessage as OrderMessage;
    ProcessOrderMessage(oMessage);
}
Run Code Online (Sandbox Code Playgroud)

我知道这个一般问题已被解决了一百万次,所以必须有一种更好的方法来解决一个方法,该方法将接口作为参数,但需要基于哪个类实现该接口的不同流控制.

c# design-patterns

34
推荐指数
3
解决办法
3万
查看次数

标签 统计

c# ×1

design-patterns ×1