我有一个具有“notify”方法的进程,它接收消息类型的基类作为参数。我想根据派生类型的消息做不同的处理。这是否意味着我需要添加一个名为“process”或类似于消息类型的方法,并使用多态性调用它?为每个特定的消息类型添加“通知”会更好吗?如何根据消息类型处理不同的处理?
更多细节:语言是C++。我认为通知在这里是一个好主意,所以我只需要一种方法来通知各种消息类型。控制器从指定纯虚通知(MsgBaseClass)方法的侦听器类继承。我仍然喜欢这个想法,因为我不必为每个新消息类型添加通知。但是在控制器代码本身中,除了动态类型转换之外,我没有看到任何区分消息类型或向消息添加消息类型的方法。
编辑:我想我要去与访客模式。它允许我只保留一个通知的方法,并且可以避免在代码中使用switch语句。 “访问者”接口将指定侦听器处理各种派生消息类型所需的各种方法。这将只需要一个消息被添加到消息的基类,纯虚“接受(MyMessageTypeVisitor v)的派生消息类别将利用v.visit实现它(这);
我认为这个现在应该工作
嗨德克, 我给主要问题增加了一些细节。 – 2009-05-02 16:50:25
我喜欢动态演员主意的简单性。但是将处理与消息本身打包在一起更“OO”,不是吗? – 2009-05-02 17:06:59