php设计模式 - 装饰器模式

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

在不改变原先UserInfo类的基础上,改变用户信息输出为大写格式。

<?php  
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();

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

你可能感兴趣的:(php设计模式 - 装饰器模式)