【装饰模式】
装饰模式,又称装饰器模式 或 装饰者模式 或 油漆工模式,通过创建一个“装饰对象”,在不改变原有类和使用继承的情况下,动态地扩展一个对象的功能,比直接生成子类继承更加灵活,可以通过多个不同的具体装饰类,创建多个不同的行为组合。
结构:
- 抽象构件(Component):是一个接口或者抽象类,定义核心的原始对象,用来规范准备接收附加责任的对象。
- 具体构件(ConcreteComponent):实现抽象构件,通过装饰角色为其添加一些职责。
- 抽象装饰角色(Decorator):关联抽象构件,定义装饰器的属性和新的方法,包含具体构件的实例,可以通过其子类扩展具体构件的功能。
- 具体装饰角色(ConcreteDecorator):抽象装饰的具体实现,并给具体构件对象添加附加的责任。
示例:下面以一个订单服务为例,在不改动原有支付方法 payOrder() 的情况下,要求支付成功后给用户增加积分,这里用装饰模式来实现,目的是对 payOrder() 方法进行装饰,扩展功能:
-
订单服务接口 抽象构件 OrderServiceInterface.php :
<?php
namespace app\design08\controller;
//订单服务接口 抽象构件
interface OrderServiceInterface
{
//创建订单
pu

装饰模式是一种设计模式,用于在不修改原有类和使用继承的情况下,动态扩展对象功能。通过创建装饰对象,可以灵活地为具体构件添加附加责任。本文以订单服务为例,展示了如何使用装饰模式在支付成功后为用户增加积分,以此说明装饰模式在实际开发中的应用。
订阅专栏 解锁全文
6897

被折叠的 条评论
为什么被折叠?



