设计模式之我见三策略模式

策略的定义就是将一组特定行为和算法封装成类,以适应某些特定上下文环境。常见电商网站会针对男女用户各自跳转不同商品类目、显示不同广告位。那么就准备两个策略类分别实现相同方法,抽象策略角色

策略模式是一种简单常见的模式。作为一个有计谋的模式,策略就是个墙头草,见人说人话、见鬼说鬼话。中学课文里田忌赛马的故事,孙子对田忌说:今以君之下驷与彼上驷,取君上驷与彼中驷,取君中驷与彼下驷。这就体现了一种策略。

三国演义这本书陪伴了整个苦逼的高中生涯,桃园结义、三英战吕布、煮酒论英雄等等故事情节现在依旧记忆犹新。其中有个章节诸葛亮三气周瑜,刘备借荆州一借不还,孙权为了夺回荆州,周瑜便献计假意招刘备为东吴女婿借机扣下作为人质,诸葛亮识破计谋,于是在刘备去东吴招亲之前,特将三个锦囊妙计交给赵云依次解决遇到的问题。这三个妙计分别是:1、找乔国老帮忙 2、向吴国太求情 3、让孙夫人断后。这三个计谋是告诉赵云如何执行,具体执行什么内容,每个计谋当然不同了,三个妙计应该实现的是同一个接口,引入策略模式

interface IStrategy
{
    /**
     * 每个锦囊妙计都是一个可执行的算法
     */
    public function operate();
}
//三个锦囊实现类
class Qiao implements IStrategy
{
    public function operate()
    {
        // TODO: Implement operate() method.
    }
}

class Wu implements IStrategy
{
    public function operate()
    {
        // TODO: Implement operate() method.
    }
}

class Sun implements IStrategy
{
    public function operate()
    {
        // TODO: Implement operate() method.
    }
}

class Strategy
{
    protected $strategy;

    function setStrategy(\Common\ExampleOne\IStrategy $strategy)
    {
        $this->strategy = $strategy;
    }

    public function operate()
    {
        $this->operate();
    }
}



你可能感兴趣的:(设计模式之我见三策略模式)