1

親クラスが子クラス内のメソッドにアクセスできるようにする必要があります。子クラスは、継承された親クラスのメソッドにアクセスできます。

しかし、子供 A が子供 B のおもちゃを借りたいとしたらどうしますか? 子供Aは親に、子供Bからそのおもちゃを借りてもいいですかと尋ねます.親は子供Aに、子供Bの部屋からそれをつかみ、子供Aに遊ぶように与えると言います.

ここで必要なものを説明するために、以下のシナリオも作成しました。これを行う方法がよくわかりません。

[話]

あなたが新しい家を購入したとしましょう。時間の特定の領域を再描画する必要があります。ああ、ちなみに、配管を調べる必要があります。

つまり、人、家、画家、配管工がいます。

担当者は、ハウス内の問題領域を見つけて書き留めます。その後、担当者は配管工と塗装工を見つけて電話し、問題を報告する必要があります。

配管工と塗装工は、専門のツールと設備を持って家に現れ、仕事を続けます。

ハウスには次のエリアがあります。

  1. トイレ
  2. シンク
  3. シャワー
  4. 外装サイディング
  5. 内壁

    • 配管工は、トイレ、シンク、およびシャワーにアクセスする必要があります。
    • 塗装工は、外壁と内壁にアクセスする必要があります。

配管工と塗装工が家に到着し、得意なことを始めました。

まず、配管工は屋内で仕事をする必要があるため、塗装工は外壁サイディングの塗装から始め、配管工が完了したら内壁に移動します。

配管工は仕事を終えました。配管工は担当者に報告し、仕事が完了したことを知らせます。

次に、人はペインターに、配管工が終了したこと、およびペインターの準備が整ったときにペインターが内壁の塗装を開始できることを伝えます。

このシナリオでは、どのクラス構造が最適でしょうか? 私は、私の興味を引いたいくつかのパターンを読みました。

コマンド パターンとオブジェクト プーリング。

私は、オブジェクト プーリングの方がより適していると考えています。ここに入力はありますか?

また、オブジェクト プーリング ルートを使用した場合、コンストラクター内で各クラスをインスタンス化し、後で使用できるようにしておく方がよいでしょうか? または、使用する必要がある場合にのみ各クラスをインスタンス化する必要がありますか? (おそらく、何らかの「実行」または「実行」メソッドを介して行われます)。

例をいただければ幸いです。

また、静的呼び出しを使用しないことをお勧めします!

4

1 に答える 1

0

私の理解が正しければstatic、サブインスタンスへのすべての参照を保持する親クラスに変数を作成する必要があります (たとえば、function __constructfunction __destruct.

class Parent {
    public static $references = array;

    public function __construct() {
        Parent::$references[] = $this;
    }

    public function __destruct() {
        // loop through $references and kill $this from it.
    }

    public function run($ref, $func) {
         // find the reference in $references and store to $r
         if (method_exists($func, $r)) {
             $r->$func();
         }
    }
于 2012-05-10T08:13:18.377 に答える