컴포지션 패턴을 사용하면 클라이언트는 개별 객체뿐만 아니라 복합 객체도 일관된 방식으로 처리할 수 있습니다. 조합 모드를 사용하면 클라이언트는 구성 파일을 수정하는 것처럼 간단하게 재귀 작업을 완료할 수 있으므로 클라이언트가 논리적으로 생각할 필요가 없습니다. 개체를 트리 구조로 그룹화하여 '부분-전체' 계층 구조를 나타냅니다.
PHP 사례:
탐색 디렉터리 추가 및 삭제:
header("Content-type:text/html; charset=utf-8"); abstract class Component { abstract function addNode(Component $obj); abstract function removeNode(Component $obj); abstract function show($str); } class Branch extends Component { public $name=''; public $childNode = array(); public function __construct($name) { $this->name = $name; } public function addNode(Component $obj) { // $this->childNode[] = $obj; array_push($this->childNode,$obj); } public function removeNode(Component $obj) { $key = array_search($obj, $this->childNode); unset($this->childNode[$key]); } public function show($str="") { echo $this->name."<br>"; $str.=" |- "; foreach ($this->childNode as $val) { echo $str; $val->show($str); } } } class Leaf extends Component { public $name; public function __construct($name) { $this->name = $name; } function addNode(Component $obj) { return false; } function removeNode(Component $obj) { return false; } function show($str="") { echo $this->name."<br>"; } } $branch1 = new Branch("家电类"); $leaf11 = new Leaf("电饭煲"); $leaf12 = new Leaf("电冰箱"); $leaf13 = new Leaf("洗衣机"); $branch1->addNode($leaf11); $branch1->addNode($leaf12); $branch1->addNode($leaf13); $branch2 = new Branch("电脑类"); $branch21 = new Branch("台式机"); $branch22 = new Branch("笔记本"); $leaf221 = new Leaf("华硕"); $leaf222 = new Leaf("联想"); $leaf223 = new Leaf("华为"); $leaf224 = new Leaf("华夏"); $branch22->addNode($leaf221); $branch22->addNode($leaf222); $branch22->addNode($leaf223); $branch22->addNode($leaf224); $branch2->addNode($branch21); $branch2->addNode($branch22); $branch1->addNode($branch2); $branch1->show();
관련 권장 사항:
관련 권장 사항:
PHP 디자인 패턴의 서비스 로케이터 패턴 예에 대한 자세한 설명
PHP 디자인 패턴 중 관찰자 패턴에 대한 자세한 설명
위 내용은 PHP 디자인 패턴의 조합 모드 및 대소문자 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!