이 기사에서는 특정 참조 가치가 있는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!