设计模式php实例:组合模式
2012-08-06 17:10
489 查看
组合模式有时候又叫做部分-整体模式,它把程序内部简单元素和复杂元素提供给客户端统一的接口,使客户端和程序的内部结构结构,内部可以随意更改扩展。
从类图上看组合模式形成一种树形结构,由枝干和叶子继承Compont显然不符合里氏代换原则。
组合模式类图:
php代码实例(来自http://www.linuxso.com/architecture/32350.html):
从类图上看组合模式形成一种树形结构,由枝干和叶子继承Compont显然不符合里氏代换原则。
组合模式类图:
php代码实例(来自http://www.linuxso.com/architecture/32350.html):
abstract class MenuComponent { public $name; public abstract function getName(); public abstract function add(MenuComponent $menu); public abstract function remove(MenuComponent $menu); public abstract function getChild($i); public abstract function show(); } class MenuItem extends MenuComponent { public function __construct($name) { $this->name = $name; } public function getName(){ return $this->name; } public function add(MenuComponent $menu){ return false; } public function remove(MenuComponent $menu){ return false; } public function getChild($i){ return null; } public function show(){ echo " |-".$this->getName()."\n"; } } class Menu extends MenuComponent { public $menuComponents = array(); public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } public function add(MenuComponent $menu) { $this->menuComponents[] = $menu; } public function remove(MenuComponent $menu) { $key = array_search($menu, $this->menuComponents); if($key !== false) unset($this->menuComponents[$key]); } public function getChild($i) { if(isset($this->menuComponents[$i])) return $this->menuComponents[$i]; return null; } public function show() { echo ":" . $this->getName() . "\n"; foreach($this->menuComponents as $v){ $v->show(); } } } class testDriver { public function run() { $menu1 = new Menu('文学'); $menuitem1 = new MenuItem('绘画'); $menuitem2 = new MenuItem('书法'); $menuitem3 = new MenuItem('小说'); $menuitem4 = new MenuItem('雕刻'); $menu1->add($menuitem1); $menu1->add($menuitem2); $menu1->add($menuitem3); $menu1->add($menuitem4); $menu1->show(); } } $test = new testDriver(); $test->run();
相关文章推荐
- 设计模式php实例:观察者模式
- PHP 继承,组合,单模式,GUID,等混合实例
- 设计模式php实例:单例模式
- PHP设计模式——组合模式
- php设计模式实例详解(综合)
- 初识PHP设计模式--组合模式
- PHP设计模式之工厂模式实例总结
- [PHP设计模式]Composite(组合)模式范例
- 设计模式C++实现(7)——外观模式、组合模式
- 设计模式(11)-Composite 组合模式
- 16. 星际争霸之php设计模式--组合模式
- 组合模式和php实现
- PHP设计模式之 单例模式 工厂模式 实例讲解
- php 单例模式实例
- PHP设计模式之简单投诉页面实例
- PHP设计模式之观察者模式(Observer)详细介绍和代码实例
- 设计模式实例(Lua)笔记之六(Adapter模式)
- 《设计模式》 - 7. 组合模式( Composite )
- PHP面向对象设计模式-8.1继承和组合对比-代码实现
- PHP设计模式之观察者模式实例