PHP设计模式之装饰者模式代码实例
发布:smiling 来源: PHP粉丝网 添加日期:2021-05-26 15:04:21 浏览: 评论:0
这篇文章主要介绍了PHP设计模式之装饰者模式代码实例,装饰者模式就是不修改原类代码和继承的情况下动态扩展类的功能,本文就给出了代码实例,需要的朋友可以参考下
定义:装饰者模式就是不修改原类代码和继承的情况下动态扩展类的功能。传统的编程模式都是子类继承父类实现方法重载,使用装饰器模式,只需添加一个新的装饰器对象,更加灵活,避免类数量和层次过多。
角色:
Component(被装饰对象基类)
ConcreteComponent(具体被装饰对象)
Decorator(装饰者基类)
ContreteDecorator(具体的装饰者类)
示例代码:
- //被装饰者基类
- interface Component
- {
- public function operation();
- }
- //装饰者基类
- abstract class Decorator implements Component
- {
- protected $component;
- public function __construct(Component $component)
- {
- $this->component = $component;
- }
- public function operation()
- {
- $this->component->operation();
- }
- }
- //具体装饰者类
- class ConcreteComponent implements Component
- {
- public function operation()
- {
- echo 'do operation'.PHP_EOL;
- }
- }
- //具体装饰类A
- class ConcreteDecoratorA extends Decorator {
- public function __construct(Component $component) {
- parent::__construct($component);
- }
- public function operation() {
- parent::operation();
- $this->addedOperationA(); // 新增加的操作
- }
- public function addedOperationA() {
- echo 'Add Operation A '.PHP_EOL;
- }
- }
- //具体装饰类B
- class ConcreteDecoratorB extends Decorator {
- public function __construct(Component $component) {
- parent::__construct($component);
- }
- public function operation() {
- parent::operation();
- $this->addedOperationB();
- }
- public function addedOperationB() {
- echo 'Add Operation B '.PHP_EOL;
- }
- }
- class Client {
- public static function main() {
- /*
- do operation
- Add Operation A
- */
- $decoratorA = new ConcreteDecoratorA(new ConcreteComponent());
- $decoratorA->operation();
- /*
- do operation
- Add Operation A
- Add Operation B
- */
- $decoratorB = new ConcreteDecoratorB($decoratorA);
- $decoratorB->operation();
- }
- }
- Client::main();
Tags: PHP设计模式 PHP装饰者模式
- 上一篇:PHP超牛逼无限极分类生成树方法
- 下一篇:PHP设计模式之适配器模式代码实例
相关文章
- ·PHP设计模式-单例模式学习笔记(2015-12-10)
- ·php设计模式之单例模式实例分析(2021-05-14)
- ·PHP设计模式之适配器模式代码实例(2021-05-26)
- ·PHP 设计模式系列之 specification规格模式(2021-07-05)
- ·PHP设计模式之注册树模式分析(2021-09-01)
- ·PHP设计模式之装饰器模式实例详解(2021-09-03)
- ·PHP设计模式之PHP迭代器模式讲解(2021-11-13)
- ·PHP设计模式之简单工厂和工厂模式实例分析(2021-11-14)
- ·PHP设计模式之抽象工厂模式实例分析(2021-11-14)
- ·PHP设计模式之单例模式定义与用法分析(2021-11-14)
- ·PHP设计模式之策略模式原理与用法实例分析(2021-11-15)
- ·php设计模式之单例模式用法经典示例分析(2021-12-19)
- ·php设计模式之适配器模式原理、用法及注意事项详解(2021-12-22)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)