为具有不同参数的同一命令处理多个对象/类型

Handling multiple objects/types for same command with different parameters

本文关键字:处理 对象 类型 命令 一命 参数      更新时间:2023-10-16

这是我的问题陈述:

  1. 我有一些对象,可以是单个对象,也可以是深度为N的树结构。所以也许我可以有物体A,B,C,D。假设A、B、C是单层对象,而D有3个孩子H、I、J。在H中,I、J、H和I是单个对象,其中J再次有子对象,依此类推
  2. 所有对象A、B、C、D、H、I、J都有一个行为execute()
  3. 我有一个不同的类X,所有这些对象都必须使用类X的相同实例的不同方法
  4. 我如何处理这种情况:
    • 一个函数调用为同一级别上以及层次结构下的所有对象执行execute()方法
    • 我不必把X的实例化传递给所有的对象
    • 每个对象在其execute()方法中做一些不同的工作

除了复合模式,我什么都想不出来,但我担心的是:-我不想将INSTANCE OF X传递给execute()方法参数中的所有对象,但该方法需要相同的INSTANCE OF X。

我假设所有具有execute()方法的对象都有一个公共基类。我会给基类一个静态成员,它存储对X或X本身的引用或指针。然后可以调用base::SetX()或base::GetX()。

(如果这成为一个多线程应用程序,这也将允许您使用基类中的互斥对象来控制对它的访问)。

X听起来像是一个单例,所以根据X的不可变程度,您可能只想将其全局化。