程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP設計模式系列 - 裝飾器

PHP設計模式系列 - 裝飾器

編輯:關於PHP編程

什麼是裝飾器
裝飾器模式,對已有對象的部分內容或者功能進行調整,但是不需要修改原始對象結構,可以使用裝飾器設
應用場景
設計一個UserInfo類,裡面有UserInfo數組,用於存儲用戶名信息
通過addUser來添加用戶名
getUserList方法將打印出用戶名信息
現在需要將添加的用戶信息變成大寫的,我們需要不改變原先的類,並且不改變原先的數據結構
我們設計了一個UserInfoDecorate類來完成這個需求的操作,就像裝飾一樣,給原先的數據進行了裝修
裝飾器模式有些像適配器模式,但是一定要注意,裝飾器主要是不改變現有對象數據結構的前提
代碼:UserInfo
[php]
<?php 
//裝飾器模式,對已有對象的部分內容或者功能進行調整,但是不需要修改原始對象結構,可以使用裝飾器設計模式 
class UserInfo { 
 
    public $userInfo = array();  
         
    public function addUser($userInfo) { 
        $this->userInfo[] = $userInfo; 
    } 
         
    public function getUserList() { 
        print_r($this->userInfo); 
    } 

代碼:UserInfoDecorate 裝飾一樣,改變用戶信息輸出為大寫格式,不改變原先UserInfo類
[php] 
<?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(); 

 

作者:initphp

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved