我有类似以下的情况:
class EventHandler { ... };
class Event {void Accept(EventHandler&) { ... }};
class SpecialEventHandler : public EventHandler { ... };
class SpecialEvent : public Event {void Accept(SpecialEventHandler&) { ... }};
有些事件是 的子类型,Event
有些是 的子类型SpecialEvent
。这些事件被添加到Event
s 队列中,然后我需要使用SpecialEventHandler
.
问题是处理特殊事件,因为唯一Accept
可以调用的方法是其中的一个,Event
因此只能EventHandler
传入一个。我有一个使用双访问者模式的解决方案,但这既笨重又令人困惑。
- 这种情况有模式吗?
- 有没有更好的设计方法?