ホームページ >バックエンド開発 >PHPチュートリアル >PHPデザインパターン組み合わせパターン

PHPデザインパターン組み合わせパターン

不言
不言オリジナル
2018-04-18 11:55:091536ブラウズ

この記事では、特定の参考値を持つ PHP デザイン パターンの結合モードを紹介します。必要な友達はそれを参照できます

デザイン パターンに属するコンバイナー (コンポジット) モード 。構造パターンの 1 つで、その主な目的は、複数のオブジェクトをツリー状の構造に組み合わせて「全体」の関係を表現することです。
例: 樹形図を使用して、江蘇省 -> 南京市 -> 秦淮区および建業区を表します。
その中で、江蘇省は第1レベル、南京市は江蘇省に属し第2レベル、建業区と秦淮区は南京市に属し第3レベルです。
次のような構造が得られます:


-->江苏省          1级
-->-->南京市       2级
-->-->-->秦淮区    3级
-->-->-->建邺区    3级



コンバイナーモードの役割は、クライアントが同じ方法でオブジェクトを結合し、マスター/スレーブレベルを区別して改善することです。柔軟性と拡張性。 Rreree

<?php  
         
      
/** 抽象一个总组合器类     
 *  abstract IComposite          
 */   
abstract Class IComposite  
{  
   protected $name;  
   function __construct($name)  
   {  
      $this->name = $name;  
   }  
   abstract function Add(IComposite $place);  
  
   abstract function Display($level);  
}  
  
/** 组合器类 供客户端调用 
 *  Composite          
 */  
Class Composite extends IComposite  
{  
   private $places = array();  
  
   function __construct($name)  
   {   
      parent::__construct($name);  
   }  
  
   function Add(IComposite $place)  
   {  
      $this->places[] = $place;  
   }  
  
/** 显示方法 
 *  Display  
 *  $level 级别 默认江苏省为 1级       
 */  
   function Display($level = "1")  
   {  
      $pre = "";  
  
      for ($i=0; $i < $level; $i++) {   
          $pre.= "-->";  
      }  
      $pre.=$this->name."<br/>";  
      echo $pre;  
  
      foreach ($this->places as $v) {  
          // 往后南京市 级别加1 秦淮区在南京市基础上再加1  
         $v->display($level+1);   
      }  
  
   }  
}
-LERETALED推奨事項:

PHPデザインパターンブリッジモード

PHPデザインパターンアダプターモード

PHPデザインパターンビルダーモード

以上がPHPデザインパターン組み合わせパターンの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。