<?php
//如果已有对象的部分内容或功能性发生改变,但是不需要修改原始对象的结构,那么使用装饰器设计模式最适合。
class CD{
public $trackList;
public function __construct(){
$this->trackList = [];
}
public function addTrack($track){
$this->trackList[] = $track;
}
public function getTrackList(){
$output = '';
foreach($this->trackList as $num => $track){
$output .= ($num + 1). "){$track}.";
}
return $output;
}
}
$tracksFromExternalSource = ['What It Means', 'Brr', 'Goodbye'];
$myCD = new CD();
foreach($tracksFromExternalSource as $track){
$myCD->addTrack($track);
}
class CDTrackListDecoratorCaps{
private $_cd;
public function __construct($cd){
$this->_cd = $cd;
}
public function makeCaps(){
foreach ($this->_cd->trackList as $k => $track) {
$this->_cd->trackList[$k] = strtoupper($track);
}
}
}
$myCDCaps = new CDTrackListDecoratorCaps($myCD);
$myCDCaps->makeCaps();
echo "The CD contains the following tracks:".$myCD->getTrackList();
转载于:https://blog.51cto.com/hehe1987/1831620
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/108929.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...