首页 / PHP / PHP设计模式 - 合成模式
PHP设计模式 - 合成模式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP设计模式 - 合成模式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3100字,纯文字阅读大概需要5分钟。
内容图文
组合模式(Composite Pattern)有时候又叫做部分-整体模式,用于将对象组合成树形结构以表示“部分-整体”的层次关系。组合模式使得用户对单个对象和组合对象的使用具有一致性。
常见使用场景:如树形菜单、文件夹菜单、部门组织架构图等。
<?php /** * *安全式合成模式 */ interface Component { public function getComposite(); //返回自己的实例 public function operation(); } class Composite implements Component { // 树枝组件角色 private $_composites; public function __construct() { $this->_composites = array(); } public function getComposite() { return $this; } public function operation() { foreach ($this->_composites as $composite) { $composite->operation(); } } public function add(Component $component) { //聚集管理方法 添加一个子对象 $this->_composites[] = $component; } public function remove(Component $component) { // 聚集管理方法 删除一个子对象 foreach ($this->_composites as $key => $row) { if ($component == $row) { unset($this->_composites[$key]); return TRUE; } } return FALSE; } public function getChild() { // 聚集管理方法 返回所有的子对象 return $this->_composites; } } class Leaf implements Component { private $_name; public function __construct($name) { $this->_name = $name; } public function operation() {} public function getComposite() {return null;} } // client $leaf1 = new Leaf(‘first‘); $leaf2 = new Leaf(‘second‘); $composite = new Composite(); $composite->add($leaf1); $composite->add($leaf2); $composite->operation(); $composite->remove($leaf2); $composite->operation(); /** * *透明式合成模式 */ interface Component { // 抽象组件角色 public function getComposite(); // 返回自己的实例 public function operation(); // 示例方法 public function add(Component $component); // 聚集管理方法,添加一个子对象 public function remove(Component $component); // 聚集管理方法 删除一个子对象 public function getChild(); // 聚集管理方法 返回所有的子对象 } class Composite implements Component { // 树枝组件角色 private $_composites; public function __construct() { $this->_composites = array(); } public function getComposite() { return $this; } public function operation() { // 示例方法,调用各个子对象的operation方法 foreach ($this->_composites as $composite) { $composite->operation(); } } public function add(Component $component) { // 聚集管理方法 添加一个子对象 $this->_composites[] = $component; } public function remove(Component $component) { // 聚集管理方法 删除一个子对象 foreach ($this->_composites as $key => $row) { if ($component == $row) { unset($this->_composites[$key]); return TRUE; } } return FALSE; } public function getChild() { // 聚集管理方法 返回所有的子对象 return $this->_composites; } } class Leaf implements Component { private $_name; public function __construct($name) {$this->_name = $name;} public function operation() {echo $this->_name."<br>";} public function getComposite() { return null; } public function add(Component $component) { return FALSE; } public function remove(Component $component) { return FALSE; } public function getChild() { return null; } } // client $leaf1 = new Leaf(‘first‘); $leaf2 = new Leaf(‘second‘); $composite = new Composite(); $composite->add($leaf1); $composite->add($leaf2); $composite->operation(); $composite->remove($leaf2); $composite->operation(); ?>
原文:https://www.cnblogs.com/taozi32/p/9226544.html
内容总结
以上是互联网集市为您收集整理的PHP设计模式 - 合成模式全部内容,希望文章能够帮你解决PHP设计模式 - 合成模式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。