我有一个进程,它有一个“通知”方法,它接收消息类型的基类作为参数。我想根据派生的消息类型进行不同的处理。这是否意味着我需要添加一个名为“process”或类似于消息类型的方法,并使用多态调用它?为每种特定的消息类型添加“通知”会更好吗?
更多细节:语言是 C++。我认为 notify 在这里是个好主意,因此我只需要一种方法来通知各种消息类型。控制器从指定纯虚拟通知(MsgBaseClass)方法的侦听器类继承。我仍然喜欢这个想法,因为我不必为每种新消息类型添加通知。但是在控制器代码本身中,除了动态转换或向消息添加消息类型之外,我没有看到任何区分消息类型的方法。
编辑:我想我将使用访客模式。它允许我只保留一种通知方法,并且我可以避免在我的代码中使用 switch 语句。“访问者”接口将指定侦听器处理各种派生消息类型所需的各种方法。这将只需要将一条消息添加到 Message 基类,即纯虚拟“accept(MyMessageTypeVisitor v)。派生的消息类将使用 v.visit(this); 来实现它。
我认为这应该可行。