私はオブジェクトの階層構造を持っています (3 レベルとしましょう)。
クラス A はクラス B で構成され、クラス B はクラス C で構成されます。
初期化は次のようなことを行います:
$a1 = new A()
$a1->add('B1', $b11 = new B())
$a1->add('B2', $b12 = new B())
$b11->add('C1', $c111 = new C())
$b12->add('C1', $c121 = new C())
...
私の問題は、$c121
取得したいときに発生します$c111
。私は現在、それを達成するための2つの方法を知っています:
1/ A がシングルトンであると仮定します。これにより、ツリーの任意のノードからルートに戻ることができます。次に、完全な「パス名」を使用して、ルートから任意のノードをアドレス指定できます。
2/ 各オブジェクトに祖先を与えて、ツリーを (パス名で) 行き来できるようにします。
どちらも私のニーズに応えますが、満足のいく解決策は見つかりません。
何か不足していますか?これは一般的な問題のはずですが、どの設計パターンがこの問題に一致するかわかりません。
編集階層は同様のアイテムで構成されていないことに注意してください。したがって、それは固定された階層です。各レベルのアイテムの数量のみが変動しています。(例: クライアント、注文、注文した製品)