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

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

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

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

工厂模式:咱们着眼于获得对象,并操做对象,设计模式

策略模式:咱们着重获得对象某方法的运行结果this

看代码设计

<?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
 
?>

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

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

相关文章
相关标签/搜索