使用不同参数处理同一命令的多个对象/类型

时间:2015-03-25 19:31:17

标签: c++ design-patterns

这是我的问题陈述:

  1. 我有一些对象可以是单个对象,也可以是N深度的树结构。所以也许我可以有对象A,B,C,D。说A,B,C是单级对象,而D有3个孩子H,I,J。在H,I,J,H和我之间是单个物体,J再次有孩子等等。
  2. 所有对象A,B,C,D,H,I,J都有行为execute()。
  3. 我有一个不同的类X,所有这些对象都必须使用相同类别的相同方法。
  4. 如何以下列方式处理此方案:
    • 一个函数调用对同一级别以及层次结构中的所有对象执行execute()方法。
    • 我不必将X的实例传递给所有对象。
    • 每个对象在其execute()方法中执行一些不同的工作。
  5. 除了复合模式,我什么也想不到,但我担心的是:        - 我不想将INSTANCE OF X传递给execute()方法参数中的所有对象,但该方法需要SAM的相同实例。

1 个答案:

答案 0 :(得分:0)

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

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

X听起来像一个单身人士,所以根据不可变的X是多少,你可能只想把它变成全局的。