编程中的那些套路——关于策略模式

更新于 2016-06-18  约 4 分钟

该文章属于《编程中的那些经典套路——设计模式汇总》系列,并且以下内容基于语言PHP

今天讲讲策略模式,策略模式 和工厂模式十分相像(或者说在代码逻辑层面,他们是一样的)。

但策略模式与工厂模式有一点很重要的区别:

工厂模式:我们着眼于得到对象,并操作对象,

策略模式:我们着重得到对象某方法的运行结果

看代码

<?php
 
//策略功能接口
 
interface Strategy {
 
    public function help();
 
}
 
//实际对外接口
 
interface Factory{
 
    public function action();
 
}
 
//打120
 
class Call120 implements Strategy{
 
    public function help(){
 
        echo "打120";
 
    }
 
}
 
//人工呼吸
 
class Firstaid implements Strategy{
 
    public function help(){
 
        echo '人工呼吸';
 
    }
 
}
 
//实际对外的人工呼吸接口
 
class Helpaid implements Factory{
 
    protected $object;
 
    public function action(){
 
        $this->object = new Firstaid();
 
        $this->object->help();
 
    }
 
}
 
//实际对外的120接口
 
class Help120 implements Factory{
 
    public $object;
 
    public function action(){
 
        $this->object = new Call120();
 
        $this->object->help();
 
    }
 
}
 
$Help = new Help120();
 
$Help->action();//output 打120
 
?>
 

根据不同的情况使用不同的策略,即策略模式,与工厂模式确实很像,但他确确实实不是工厂模式,重点看人如何定义它,为了操作对象即为工厂模式,为了获取结果即为策略模式。

该文章属于《编程中的那些经典套路——设计模式汇总》系列

阅读 2.1k更新于 2016-06-18

推荐阅读
傍晚八点半
用户专栏

请你指出我文章中的错误与不足,谢谢

50 人关注
28 篇文章
专栏主页
目录