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がより多くのオブジェクトで構成されているとしましょう。そのうちの 1 つはStealingCookiesFromJarです。

オブジェクトpunish内から具体的な子メソッドを呼び出すにはどうすればよいですか? StealingCookiesFromJar(私はオブザーバーに慣れていません...それは私がここで学ぶべきことですか?)

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 に答える