PHP设计模式:策略模式

策略模式:它定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。

适用场景:
1. 多个类只区别在于表现行为不同,可以使用strategy(策略)模式,在操作时动态选择具体要执行的行为(算法、策略);
2. 需要在不同情况下使用不同的策略(算法),或者策略还可能在未来用其它方式来实现;
3. 对客户隐藏具体策略(算法)的实现细节,彼此完全独立;

<?php

//策略类,定义公共接口
abstract class Strategy {
    //算法方法
    public abstract function doSomething();
}

//具体的策略类,继承Stratege
class StrategyA extends Strategy {
    public function doSomething() {
        echo 'Strategy A<br/>';
    }
}

class StrategyB extends Strategy {
    public function doSomething() {
        echo 'Strategy B<br/>';
    }
}

class StrategyC extends Strategy {
    public function doSomething() {
        echo 'Strategy C<br>';
    }
}

//ContentStragety 来配置,维护一个对Strategy对象的引用
class ContentStrategy {
    public $strategy;

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

    public function doStrategy() {
        $this->strategy->doSomething();
    }
}

//通过向ContentStrategy传人不同的策略类,实现相同的方法doStrategy()
$a = new ContentStrategy(new StrategyA());
$b = new ContentStrategy(new StrategyB());
$c = new ContentStrategy(new StrategyC());

$a->doStrategy();
$b->doStrategy();
$c->doStrategy();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值