当前位置: 首页 > news >正文

【PHP设计模式08】装饰模式

【装饰模式】

      装饰模式,又称装饰器模式 或 装饰者模式 或 油漆工模式,通过创建一个“装饰对象”,在不改变原有类和使用继承的情况下,动态地扩展一个对象的功能,比直接生成子类继承更加灵活,可以通过多个不同的具体装饰类,创建多个不同的行为组合。
      结构:

  • 抽象构件(Component):是一个接口或者抽象类,定义核心的原始对象,用来规范准备接收附加责任的对象。
  • 具体构件(ConcreteComponent):实现抽象构件,通过装饰角色为其添加一些职责。
  • 抽象装饰角色(Decorator):关联抽象构件,定义装饰器的属性和新的方法,包含具体构件的实例,可以通过其子类扩展具体构件的功能。
  • 具体装饰角色(ConcreteDecorator):抽象装饰的具体实现,并给具体构件对象添加附加的责任。

      示例:下面以一个订单服务为例,在不改动原有支付方法 payOrder() 的情况下,要求支付成功后给用户增加积分,这里用装饰模式来实现,目的是对 payOrder() 方法进行装饰,扩展功能:

  • 订单服务接口 抽象构件 OrderServiceInterface.php :
<?php
namespace app\design08\controller;
//订单服务接口 抽象构件
interface OrderServiceInterface
{//创建订单public function c
http://www.lryc.cn/news/307550.html

相关文章:

  • 寒假作业Day 01
  • 学习JAVA的第四天(基础)
  • 拉美巴西阿根廷媒体宣发稿墨西哥哥伦比亚新闻营销如何助推跨境出海推广?
  • SpringMVC 学习(九)之拦截器
  • TCP/IP-常用网络协议自定义结构体
  • 内部控制提纲
  • 江科大stm32 定时器 TIM输出比较--学习笔记
  • VHDL-2008语言支持
  • linux系统git的安装和配置
  • oracle11g数据库 冷备份与冷恢复
  • 考研数据结构算法机试训练1
  • SAP PO接口行项目json缺少中括号[]问题
  • STM32_DS18B20_1_芯片简介及初始化配置
  • 每天一个数据分析题(一百六十四)
  • 单词倒排——c语言解法
  • Python + Selenium —— 网页元素定位之class name定位!
  • matlab simulink变压器温度仿真
  • 设计模式七:责任链模式
  • Git,GitHub与GitLab分别是什么?有什么关系和区别?
  • 【Spring连载】使用Spring Data访问 MongoDB----Template API 查询Documents
  • git describe
  • React Switch用法及手写Switch实现
  • PowerShell执行策略:确保脚本安全执行的关键
  • LeetCode 热题 100 | 图论(上)
  • 跟着cherno手搓游戏引擎【25】封装2DRenderer,封装shader传参,自定义Texture
  • 多个值时 if [ -z 报错 binary operator expected
  • 如何使用ChatGPT创建一份优质简历
  • k8s(6)
  • 自动驾驶框架:自动驾驶汽车定位-感知-规划-决策-控制概述,按照我的架构图理解:决策决定的是速度,规划决定的是路径(架构理解推荐)
  • Gemma