php5大设计模式-策略模式

策略模式

定义一系列算法,将每一个算法封装起来,并让它们可以相互替换。策略模式让算法独立于使用它的客户而变化,也称为政策模式(Policy)。
完成一项任务,往往可以有多种不同的方式,每一种方式称为一个策略,我们可以根据环境或者条件的不同选择不同的策略来完成该项任务。

header("Content-type:text/html;Charset=utf-8");
//抽象策略接口
abstract class Strategy{
    abstract function wayToSchool();
}
//具体策略角色
class BikeStrategy extends Strategy{
    function wayToSchool(){
         echo "骑自行车去上学";
    }
}
class BusStrategy extends Strategy{
    function wayToSchool(){
         echo "乘公共汽车去上学";
    }
}
class TaxiStrategy extends Strategy{
    function wayToSchool(){
         echo "骑出租车去上学";
    }
}

//环境角色
class Context{
    private $strategy;
    //获取具体策略
    function getStrategy($strategyName){
        try{
            # PHP Reflection API是PHP5才有的新功能,
            # 它是用来导出或提取出关于类、方法、属性、参数等的详细信息,包括注释。
            $strategyReflection = new ReflectionClass($strategyName);

            #newInstance 用来实例化类
            $this->strategy = $strategyReflection->newInstance();

        }catch(ReflectionException $e){
             $this->strategy = ""; 
        }       
    }

    function goToSchool(){
        $this->strategy->wayToSchool();
        // var_dump($this->strategy);
    }
}
//测试
$context = new Context();
$context->getStrategy("BusStrategy");
$context->goToSchool();
 ?>

参考文章:
https://www.cnblogs.com/leedaily/p/8250158.html
http://www.cnblogs.com/yujon/p/5538464.html

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一. 增强学习简介 1.1 什么是增强学习? 机器学习的算法可以分为三类:监督学习,非监督学习和增强学习。 增强学...
    阿阿阿阿毛阅读 31,622评论 0 25
  • 包含的重点内容:JAVA基础JVM 知识开源框架知识操作系统多线程TCP 与 HTTP架构设计与分布式算法数据库知...
    消失er阅读 4,511评论 1 10
  • 1-------- 走进前端 2-------- jQuery 3-------- CSS 4-------- A...
    依依玖玥阅读 2,408评论 0 34
  • 每天人们都会产生许多的想法,然而也许能引导我们做出决定并对未来产生改变的就只有0.01秒的时间。 已经年过三十仍旧...
    摩羯小白白阅读 197评论 0 0
  • 第四十三章 你把秋天偷走了 结束是结束的结束,林紫和易枭分手了。 那天晚上下了很大的雨,林紫很简短地发给我一条短...
    废狗李子阅读 642评论 0 0

友情链接更多精彩内容