php装饰器模式(decorator pattern)
2024-10-10 21:18:16
十一点了。
<?php /* The decorator pattern allows behavior to be added to an individual object instance, without affecting the behavior of other instances of the same class. We can define multiple decorators, where each adds new functionality. */ interface LoggerInterface { public function log($message); } class Logger implements LoggerInterface { public function log($message) { file_put_contents('app.log', $message, FILE_APPEND); } } abstract class LoggerDecorator implements LoggerInterface{ protected $logger; public function __construct(Logger $logger) { $this->logger = $logger; } abstract public function log($message); } class ErrorLoggerDecorator extends LoggerDecorator { public function log($message) { $this->logger->log('ERROR: ' . $message); } } class WarningLoggerDecorator extends LoggerDecorator { public function log($message) { $this->logger->log('WARNING: ' . $message); } } class NoticeLoggerDecorator extends LoggerDecorator { public function log($message) { $this->logger->log('NOTICE: ' . $message); } } $logger = new Logger(); $logger->log('Resource not found.' . PHP_EOL); $logger = new Logger(); $logger = new ErrorLoggerDecorator($logger); $logger->log('Invalid user role.' . PHP_EOL); $logger = new Logger(); $logger = new WarningLoggerDecorator($logger); $logger->log('Missing address parameters.' . PHP_EOL); $logger = new Logger(); $logger = new NoticeLoggerDecorator($logger); $logger->log('Incorrect type provided.' . PHP_EOL); ?>
文件内容
最新文章
- pl/sql配置连接远程数据库oracle,本地没有安装oracle数据库的情况下
- LINUX 命令定期执行可执行文件
- springMVC-HelloWorld
- Oracle存储过程java 调用
- Mysql索引总结(一)
- iOS sqlite3数据库解析
- unity3D Socket连接C#server出现unity3D编辑器再次启动连接 unity3D编辑器马上卡死
- saxReader的列子
- EasyUi DataGrid中数据编辑方式及编辑后数据获取,校验处理
- java 显示视频时间--玩的
- 【Android进阶】Listview分页加载数据的实现
- 构建Docker平台【第四篇】创建服务及扩缩容等操作
- Selenium 使用Eclipse+TestNG创建一个Project中遇到的问题
- zend studio里面这块注释是用什么快捷键按出来的?
- 使用XML序列化实现系统配置 - 开源研究系列文章
- LOJ #6539 奇妙数论题
- restorecon【转】
- The META for Mobile terminal
- [Solution] 973. K Closest Points to Origin
- OSG描边特效osgFX::Outline的修改