3

如果我的术语似乎不正确,请原谅......(因为它可能是)

假设我正在使用组合,而我的高级对象类似于:

abstract child
{
    /* array of Activity objects */
    public $activities;

    abstract function punish() {}
}

favoriteChild extends child
{
    function punish() {
        // Have a talk
    }
}

redHeadedStepChild extends child
{
    function punish() {
        // Beat with wrench
    }
}

现在假设它$activities由更多对象组成,其中一个是StealingCookiesFromJar

如何punishStealingCookiesFromJar对象内部调用具体的子方法?(我不熟悉观察者......这是我应该在这里学习的吗?)

4

1 回答 1

0

您需要在 StealingCookiesFromJar 对象中创建一个具体的子对象。创建它或将其传递给方法

 class StealingCookiesFromJar{
    function doSomething(){
      $child = new redHeadedStepChild();
      $child->punish();
     }
  }

或者

 class StealingCookiesFromJar{
    function doSomething(redHeadedStepChild $child){
       $child->punish();
    }
  }
于 2012-10-31T16:27:31.197 回答