PHP设计模式——组合模式
来源:互联网 发布:javascript jquery 编辑:程序博客网 时间:2024/05/17 22:13
WEB开发笔记 www.chhua.com 每日练习 PHP设计模式——组合模式
以前我写过关于PHP组合模式的演示代码,感觉写的太过抽象,今天再重新写一下。
PHP设计模式中的组合模式是最明显也最常用最容易理解的一个模式,一个组合体可用典型的面向对象的方式来表示树形结构,如多级菜单或可以回复的论坛等。
下面我们就用面向对象的方法演示一个树形菜单的类,也许会更加容易理解一些。
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
<?php abstract class MenuComp {//写一个表示菜单和菜单选项之间相似性的抽象类protected $marked=FALSE;//标识状态protected $label; public function mark(){$this->marked=TRUE;}//设置标记状态public function ismark(){return $this->marked;}//返回标记状态 public function setLabel($label){ $this->label=$label;}//设置标签public function getLabel(){ return $this->label;}//返回标签 abstract public function hasMenuOptionId($id);//抽象方法用来标识IDabstract public function MarkPathToMenuOption($id);//抽象方法用来标识菜单路径} class menu extends MenuComp{protected $marked=false;//标记状态protected $label;//菜单标签private $children=array();//子菜单或子菜单选项数组private $id;//菜单ID public function __construct($label,$id){//构造函数用来设置标签和ID$this->label=$label;$this->id=$id;} public function add($child){//添加菜单$this->children[]=$child;} public function hasMenuOptionId($id){//用迭代方式询问所有子对象上是否有对应ID的菜单选项foreach ($this->children as $child){if ($child->hasMenuOptionID($id)) return TRUE;}return FALSE;} public function MarkPathToMenuOption($id){//用迭代方式标记路径if (!$this->hasMenuOptionId($id)) return FALSE;$this->mark();foreach ($this->children as $child){//用迭代方式$child->MarpathToMenuOption($id);}}} class menuOption extends MenuComp {//菜单选项类protected $marked=false;//标记状态protected $label;//菜单标签例如:www.chhua.comprivate $id;//菜单ID public function __construct($label,$id){//构造函数用来设置标签和ID$this->label=$label;$this->id=$id;} public function hasMenuOptionId($id){return $id==$this->id;} public function MarkPathToMenuOption($id){if ($this->hasMenuOptionId($id)) $this->mark();}} ?>
/*以上方法就是演示了组合模式的使用,当然了,主要是要看menu类,没有迭代循环的更加明显。
* 记住我的PHP进阶群号:63417682*/
自由转载,转载请注明: 转载自WEB开发笔记 www.chhua.com
0 0
- PHP设计模式——组合模式
- 设计模式—组合模式
- 设计模式—组合模式
- PHP设计模式——组合器模式
- 设计模式——组合设计模式
- 设计模式组合——命令模式组合工厂模式
- 每日设计模式——组合模式
- 设计模式——组合模式
- Java设计模式——组合模式
- java设计模式——组合模式
- 设计模式——组合模式
- 设计模式——组合模式
- 设计模式——组合模式
- 设计模式——组合模式
- Python设计模式——组合模式
- 设计模式8——组合模式
- C++设计模式——组合模式
- 设计模式——组合模式
- 字符串问题
- 动规-洛谷P1415 拆分数列
- PHP高级对象构建——使用创建方法
- 机器学习笔记九:K近邻算法(KNN)
- redis与mysql的区别
- PHP设计模式——组合模式
- 设计模式---模板模式(C++实现)
- Eclipse的xml中自动提示Java类插件Rinzo
- PHP设计模式——迭代器模式
- Maven介绍,包括作用、核心概念、用法、常用命令、扩展及配置
- 移动端的自适应rem布局
- 登陆用户名密码验证
- 通过sap的表维护工具生成维护代码并建立自定义的TCODE
- 设计模式之:门面模式