为具有不同参数的同一命令处理多个 objects/types
Handling multiple objects/types for same command with different parameters
这是我的问题陈述:
- 我有一些 object 可以是单个 object,也可以是 N 深度的树结构。所以也许我可以有 objects A、B、C、D。假设 A、B、C 是单级 object,而 D 有 3 children H、I、J。在 H,I,J 中,H 和 I 是单个 object,其中 J 再次具有 children,依此类推。
- 所有 Objects A、B、C、D、H、I、J 都有一个行为 execute()。
- 我有一个不同的 class X,所有这些 object 必须使用 CLASS X 的同一实例的不同方法。
- 我该如何处理这种情况:
- 一个函数调用为同一级别以及层次结构中的所有 object 执行 execute() 方法。
- 我不必将 X 的实例传递给所有 object。
- 每个 object 在其 execute() 方法中做一些不同的工作。
除了复合模式,我什么也没想,但我担心的是:
- 我不想将 X 的实例传递给 execute() 方法参数中的所有 object,但该方法需要 X 的相同实例。
我假设所有具有 execute() 方法的对象都有一个共同的基础 class。我会给基 class 一个静态成员,它存储对 X 或 X 本身的引用或指针。然后,您可以调用 base::SetX() 或 base::GetX()。
(这还允许您使用基 class 中的互斥锁来控制对它的访问,如果它成为多线程应用程序的话)。
X 听起来像一个单例,因此根据 X 的不可变程度,您可能只想将其设为全局。
这是我的问题陈述:
- 我有一些 object 可以是单个 object,也可以是 N 深度的树结构。所以也许我可以有 objects A、B、C、D。假设 A、B、C 是单级 object,而 D 有 3 children H、I、J。在 H,I,J 中,H 和 I 是单个 object,其中 J 再次具有 children,依此类推。
- 所有 Objects A、B、C、D、H、I、J 都有一个行为 execute()。
- 我有一个不同的 class X,所有这些 object 必须使用 CLASS X 的同一实例的不同方法。
- 我该如何处理这种情况:
- 一个函数调用为同一级别以及层次结构中的所有 object 执行 execute() 方法。
- 我不必将 X 的实例传递给所有 object。
- 每个 object 在其 execute() 方法中做一些不同的工作。
除了复合模式,我什么也没想,但我担心的是: - 我不想将 X 的实例传递给 execute() 方法参数中的所有 object,但该方法需要 X 的相同实例。
我假设所有具有 execute() 方法的对象都有一个共同的基础 class。我会给基 class 一个静态成员,它存储对 X 或 X 本身的引用或指针。然后,您可以调用 base::SetX() 或 base::GetX()。
(这还允许您使用基 class 中的互斥锁来控制对它的访问,如果它成为多线程应用程序的话)。
X 听起来像一个单例,因此根据 X 的不可变程度,您可能只想将其设为全局。