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

1

该文章属于《编程中的那些经典套路——设计模式汇总》系列,并且以下内容基于语言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
 
?>
 

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

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

你可能感兴趣的

TIGERB · 2016年09月18日

工厂抽象事物,策略抽象行为,可以这样理解么?

回复

大菌说事 作者 · 2016年09月19日

这样理解是可以的。
但其实设计模式是人们根据经验造出来的,并不是什么金科玉律所以只要便于自己理解并能灵活应用就行了

回复

TIGERB · 2016年09月19日

嗯嗯,谢谢

回复

载入中...