【发布时间】:2012-08-18 15:23:54
【问题描述】:
我正在使用访问者模式在某些类上定义一组操作。
有些操作是可交换的,所以我最终会在访问者模式代码中出现重复。
假设我有 A B C 类,并且操作:A*A、A*B、A*C、B*A、B*B、B*C、C*A、C*B、C*C。
A*A、B*B、C*C 是唯一的。
A*B、B*A和朋友会有代码重复
我可以实现 A*B,并让 B*A 调用 A*B,但我最终会问自己:我在哪个文件中再次实现了 A 和 B 之间的操作,在 A 中还是在 B 中? (大约有6个班,所以我会问这个问题很多。15对可能的操作)
将来有人在执行新操作时有可能使 A*B 调用 B*A 调用 A*B 的无限循环。
有一个约定来决定哪个应该实现 A*B 或 B*A 是不自然的。
我可以创建一个包含由 A*B 和 B*A 调用的所有已实现函数的第三个文件,这似乎不是非常面向对象的。
您将如何解决这个问题?
谢谢
(我可以列出一些代码,但它很长,不容易说明这一点)
【问题讨论】:
标签: c++ oop design-patterns visitor-pattern