分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > IT知识

PHP 装饰器模式

发布时间:2023-09-06 02:25责任编辑:郭大石关键词:PHP

装饰器模式简介

  1. 装饰器模式(Decorator),可以动态地添加修改类的功能
  2. 一个类提供了一项功能,如果要在修改并添加额外的功能,传统的编程模式,需要写一个子类继承它,并重新实现类的方法
  3. 使用装饰器模式,仅需在运行时添加一个装饰器对象即可实现,可以实现最大的灵活性

示例代码

<?php/** * 输出一个字符串 * 装饰器动态添加功能 * Class EchoText */class EchoText{ ???protected $decorator = []; ???public function Index() ???{ ???????//调用装饰器前置操作 ???????$this->beforeEcho(); ???????echo "你好,我是装饰器。"; ???????//调用装饰器后置操作 ???????$this->afterEcho(); ???} ???//增加装饰器 ???public function addDecorator(Decorator $decorator) ???{ ???????$this->decorator[] = $decorator; ???} ???//执行装饰器前置操作 先进先出原则 ???protected function beforeEcho() ???{ ???????foreach ($this->decorator as $decorator) ???????????$decorator->before(); ???} ???//执行装饰器后置操作 先进后出原则 ???protected function afterEcho() ???{ ???????$tmp = array_reverse($this->decorator); ???????foreach ($tmp as $decorator) ???????????$decorator->after(); ???}}/** * 装饰器接口 * Class Decorator */interface Decorator{ ???public function before(); ???public function after();}/** * 颜色装饰器实现 * Class ColorDecorator */class ColorDecorator implements Decorator{ ???protected $color; ???public function __construct($color) ???{ ???????$this->color = $color; ???} ???public function before() ???{ ???????echo "<dis style='color: {$this->color}'>"; ???} ???public function after() ???{ ???????echo "</div>"; ???}}/** * 字体大小装饰器实现 * Class SizeDecorator */class SizeDecorator implements Decorator{ ???protected $size; ???public function __construct($size) ???{ ???????$this->size = $size; ???} ???public function before() ???{ ???????echo "<dis style='font-size: {$this->size}px'>"; ???} ???public function after() ???{ ???????echo "</div>"; ???}}//实例化输出类$echo = new EchoText();//增加装饰器$echo->addDecorator(new ColorDecorator('red'));//增加装饰器$echo->addDecorator(new SizeDecorator('22'));//输出$echo->Index();

PHP 装饰器模式

原文地址:https://www.cnblogs.com/jjxhp/p/10061688.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved