結合モードについては、ツリー構造でデータを処理するために使用されるものであり、私たちが理解している結合関係とは何の関係もありません。ツリー構造でしかデータを処理できないため、日常生活ではあまり使用されませんが、ツリー構造が満たされている場合は、このモードを使用すると非常にうまく処理でき、コード量を大幅に削減して作成することができます。コードは簡潔かつ明確に書かれています。
定義
構成パターンは構造設計パターンであり、これを使用してオブジェクトをツリー構造に組み合わせることができ、次のようになります。彼らは独立した物体を好みます。その核心は再帰にあり、それによってツリー構造のデータが順番に処理されます。
#シナリオ
ファイル ディレクトリ ツリーは、典型的なツリー構造のデータです。以下は、ファイルまたはディレクトリのサイズを計算するために使用されるクラスを示しています。このクラスには、子ノード (サブツリー) addNode を追加するメソッドと、ファイルまたはディレクトリのサイズをカウントする fileSize という 2 つの主なメソッドがあります。class File { private $path = ''; private $nodes = []; private $fileSize = 0; public function __construct(string $path, int $fileSize) { $this->path = $path; $this->fileSize = $fileSize; } public function addNode (File $node) { $this->nodes[] = $node; } public function fileSize () { $size = 0; foreach ($this->nodes as $node) { $size += $node->fileSize(); } return $size; } }
/app /app/1.txt /app/a /app/b /app/a/a1.txt /app/b/b1.txt /app/b/b2.txt
$node0 = new File('/app', 0); $node1 = new File('/app/1.txt', 1000); $node2 = new File('/app/a', 0); $node3 = new File('/app/b', 0); $node21 = new File('/app/a1.txt', 1000); $node31 = new File('/app/b1.txt', 1000); $node32 = new File('/app/b2.txt', 1000); $node2->addNode($node21); $node3->addNode($node31); $node3->addNode($node32); $node0->addNode($node1); $node0->addNode($node2); $node0->addNode($node3); // 计算目录/app/b大小 echo $node3->fileSize() . 'B' . PHP_EOL; // 2000 // 计算/app目录大小 echo $node0->fileSize() . 'B' . PHP_EOL; // 4000
概要
結合モードは、オブジェクトのグループをツリー構造に編成し、オブジェクトをツリーのノードとして扱います。ツリー状のデータ構造を利用し、再帰を使用して各サブツリーを処理することで、コードの実装が簡素化されます。このモードはデータに対する要件が厳しいため、日常生活ではあまり使用されません。このモードを使用する場合は、ビジネス シナリオをよく理解し、データをツリー構造に抽象化できる必要があります。一般に、私たちがよく目にするものには、ファイル ディレクトリ ツリー、Infinitus 分類処理などが含まれます。以上がPHPデザインパターンの組み合わせモード - ツリー構造データの処理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。