当前位置:首页 > PHP

php策略模式实现

2026-02-15 10:33:00PHP

php策略模式实现

php策略模式实现

策略模式简介

策略模式(Strategy Pattern)属于行为型设计模式,允许在运行时动态选择算法或行为。它将算法封装成独立的类,使得它们可以互相替换,而不影响客户端代码。

核心组成部分

  1. 策略接口(Strategy Interface):定义所有支持的算法或行为的公共接口。
  2. 具体策略类(Concrete Strategies):实现策略接口的具体算法。
  3. 上下文类(Context):持有一个策略对象的引用,并通过策略接口调用具体算法。

PHP实现示例

定义策略接口

interface PaymentStrategy {
    public function pay(float $amount): void;
}

实现具体策略类

class CreditCardPayment implements PaymentStrategy {
    public function pay(float $amount): void {
        echo "Paying $amount via Credit Card.\n";
    }
}

class PayPalPayment implements PaymentStrategy {
    public function pay(float $amount): void {
        echo "Paying $amount via PayPal.\n";
    }
}

class BankTransferPayment implements PaymentStrategy {
    public function pay(float $amount): void {
        echo "Paying $amount via Bank Transfer.\n";
    }
}

实现上下文类

class PaymentContext {
    private PaymentStrategy $strategy;

    public function __construct(PaymentStrategy $strategy) {
        $this->strategy = $strategy;
    }

    public function setPaymentStrategy(PaymentStrategy $strategy): void {
        $this->strategy = $strategy;
    }

    public function executePayment(float $amount): void {
        $this->strategy->pay($amount);
    }
}

客户端调用

$amount = 100.50;

// 使用信用卡支付
$context = new PaymentContext(new CreditCardPayment());
$context->executePayment($amount);

// 动态切换为 PayPal 支付
$context->setPaymentStrategy(new PayPalPayment());
$context->executePayment($amount);

关键优势

  1. 灵活扩展:新增支付方式只需添加新的策略类,无需修改现有代码。
  2. 解耦:客户端代码与具体算法分离,降低耦合度。
  3. 运行时切换:通过 setPaymentStrategy 动态更换策略。

实际应用场景

  1. 支付方式选择(如示例)。
  2. 排序算法(快速排序、冒泡排序等动态切换)。
  3. 数据压缩(ZIP、RAR 等不同压缩策略)。

通过策略模式,可以优雅地解决需要频繁变更算法或行为的场景。

标签: 策略模式
分享给朋友:

相关文章

单例模式的实现PHP

单例模式的实现PHP

单例模式的基本概念 单例模式是一种创建型设计模式,确保一个类只有一个实例,并提供全局访问点。适用于需要全局唯一对象的场景,如数据库连接、日志管理等。 PHP 单例模式的实现步骤 私有化构造函数…

vue路由模式实现

vue路由模式实现

Vue 路由模式的实现方法 Vue Router 提供了两种主要的路由模式:hash 模式和 history 模式。以下是它们的实现方式和区别。 hash 模式 hash 模式使用 URL 的 ha…

单例模式的实现PHP

单例模式的实现PHP

单例模式的基本概念 单例模式确保一个类只有一个实例,并提供一个全局访问点。适用于需要全局唯一对象的场景,如数据库连接、日志管理等。 PHP 单例模式的实现步骤 私有化构造函数 防止外部通过 ne…

php实现单例模式

php实现单例模式

单例模式的基本概念 单例模式是一种创建型设计模式,确保一个类只有一个实例,并提供全局访问点。适用于需要全局唯一对象的场景,如数据库连接、日志管理等。 PHP实现单例模式的核心步骤 私有化构造函数 防…

php怎么实现单例模式

php怎么实现单例模式

单例模式的基本概念 单例模式是一种创建型设计模式,确保一个类只有一个实例,并提供一个全局访问点。在PHP中,单例模式常用于数据库连接、日志记录器等需要全局唯一实例的场景。 实现单例模式的步骤 私有化…

php实现模式

php实现模式

PHP 实现设计模式的方法 设计模式是解决常见编程问题的可重用方案。PHP 中可以通过面向对象的方式实现多种设计模式。以下是几种常见模式的实现方法: 单例模式 单例模式确保一个类只有一个实例,并提供…