> 백엔드 개발 > PHP 튜토리얼 > PHP 디자인 패턴 조합 패턴

PHP 디자인 패턴 조합 패턴

不言
풀어 주다: 2023-03-24 10:04:02
원래의
1494명이 탐색했습니다.

이 기사에서는 특정 참조 가치가 있는 PHP 디자인 패턴의 조합 모드를 소개합니다. 이제 모든 사람과 공유합니다. 필요한 친구들이 참조할 수 있습니다.

디자인 패턴에 속하는 결합기(복합) 모드 구조적 패턴 중 하나인 이 패턴의 주요 목적은 여러 객체를 트리 구조로 결합하여 "전체-부분" 관계를 표현하는 것입니다.
예: 수형도를 사용하여 장쑤성->난징시->친화이구 및 젠예구를 나타냅니다.
그중 장쑤성은 1급, 난징시는 장쑤성에 속해 2급, 건예구와 친화이구는 난징시에 속해 3급이다.
아래와 같은 구조를 얻게 됩니다.


-->江苏省          1级
-->-->南京市       2级
-->-->-->秦淮区    3级
-->-->-->建邺区    3级
로그인 후 복사



Combiner 모드의 역할은 클라이언트가 동일한 방법으로 객체를 결합하여 마스터-슬레이브 레벨을 구별하는 것입니다. 유연성과 확장성을 향상시킵니다.

<?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);   
      }  
  
   }  
}
로그인 후 복사
<?php  
  
// 组合器模式  index.php  
header("Content-Type:text/html;charset=utf-8");  
  
require_once "Composite.php"; // Composite.php  
  
// 先处理江苏省  
$jiangsu = new Composite("江苏省");  
  
// 再处理南京市  
$nanjing = new Composite("南京市");  
  
// 最后处理秦淮区和建邺区  
$qinhuai = new Composite("秦淮区");   
$jianye = new Composite("建邺区");  
  
// 把南京添加到江苏省下  
$jiangsu->Add($nanjing);  
  
// 把秦淮区和建邺区添加到南京市下  
$nanjing->Add($qinhuai);  
$nanjing->Add($jianye);  
  
$jiangsu->Display(); // 显示
로그인 후 복사

관련 권장 사항:

PHP 디자인 패턴 브리지 모드

PHP 디자인 패턴 어댑터 모드

PHP 디자인 패턴 빌더 모드



위 내용은 PHP 디자인 패턴 조합 패턴의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿