• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

PHP设计模式之策略模式

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

策略模式(Strategy pattern)是行为类模式中的一个类型。行为类模式用来说明一个应用是如何运作的。

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

  • 封装:把行为用接口封装起来,我们可以把那些经常变化的部分,从当前的类中单独取出来,用接口进行单独的封装。
  • 互相替换:我们封装好了接口,通过指定不同的接口实现类进行算法的变化。
<?php
/**
 * 定义接口
 */
interface car{
    public function run();
}

/**
 * 接口算法实现
 * @return [type] [description]
 */
class bmwCar implements car{
    public function run(){

        echo "宝马汽车在路上奔驰\n";
    }
}

/**
 * 接口算法实现
 * @return [type] [description]
 */
class audiCar implements car{
    public function run(){

        echo "奥迪汽车在路上奔驰\n";
    }
}

/**
 * 使用不同算法的类
 * @param integer $speed [description]
 */
class chooseCar{
    public $speed;

    function __construct($speed=60){
        $this->speed = $speed;

    }

    function start($brand){
        $car = null;

        switch($brand){
            case "bmw":
                $car = new bmwCar();
                break;
            case "audi":
                $car = new audiCar();
                break;
            default:
                $car = new bmwCar();
        }
        $car->run();
        echo "时速为{$this->speed}km/h";
    }
}

$car = new chooseCar(180);
$car->start("audi");

//输出
奥迪汽车在路上奔驰 时速为180km/h

策略模式会立即改变一个算法,当我们使用的类比较简单,但是又相互不关联,只是在特定行为上有所差异的场景下,策略模式就会十分有用。

就在编程领域之外,有许多例子是关于策略模式的。例如:

如果我需要在早晨从家里出发去上班,我可以有几个策略考虑:我可以乘坐地铁,乘坐公交车,走路或其它的途径。每个策略可以得到相同的结果,但是使用了不同的资源。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
php数学函数bc的使用(浮点数计算)发布时间:2022-07-10
下一篇:
docker灵活的构建php环境发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap