【PHP模式】让面向对象更加灵活的模式-装饰模式

装饰模式
装饰模式模式,对已有对象的部分内容或者功能进行调整,但是不需要修改原始对象结构,可以使用装饰模式

应用场景
设计一个UserInfo类,里面有UserInfo数组,用于存储用户名信息
通过addUser来添加用户名
getUserList方法将打印出用户名信息
现在需要将添加的用户信息变成大写的,我们需要不改变原先的类,并且不改变原先的数据结构
我们设计了一个UserInfoDecorate类来完成这个需求的操作,就像装饰一样,给原先的数据进行了装修
装饰模式模式有些像适配器模式,但是一定要注意,装饰模式主要是不改变现有对象数据结构的前提

代码:UserInfo

 
//装饰模式模式,对已有对象的部分内容或者功能进行调整,但是不需要修改原始对象结构,可以使用装饰模式设计模式  
class UserInfo {
	public $userInfo = array();   
		  
	public function addUser($userInfo) {  
		$this->userInfo[] = $userInfo;  
	}  
 
	public function getUserList() {  
		print_r($this->userInfo);  
	}  
}  

代码:UserInfoDecorate 装饰一样,改变用户信息输出为大写格式,不改变原先UserInfo类

include("UserInfo.php");  
class UserInfoDecorate {  
	  
	public function makeCaps($UserInfo) {  
		foreach ($UserInfo->userInfo as &$val) {  
			$val = strtoupper($val);  
		}  
	}  
	  
}  
  
$UserInfo = new UserInfo;  
$UserInfo->addUser('zhu');  
$UserInfo->addUser('initphp');  
$UserInfoDecorate = new UserInfoDecorate;  
$UserInfoDecorate->makeCaps($UserInfo);  
$UserInfo->getUserList();  

郑重声明:

1 本资源来源于互联网,资源的版权归资源原作者所持有,受《中华人民共和国著作权法》等相关法律保护。

2 由于无法和原作者取得联系,所以上传的部分资源无法先通过原作者的同意就分享给大家了,如本资源侵犯了您(原作者)的权益,请联系我们(微信号 xiaohaimei1989),我们会立马删除您的资源,并向您表达诚挚的歉意!

3 本站是一个公益型网站,分享资源的目的在于传播知识,分享知识,收取一点点打赏的辛苦费是用于网站的日常运营开支,并非用于商业用途。

4 本站资源只提供学习和参考研究使用,使用过后请在第一时间内删除。本站不承担资源被单位或个人商用带来的法律责任。

发表评论