该文章属于《编程中的那些经典套路——设计模式汇总》系列,并且以下内容基于语言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
?>
根据不同的情况使用不同的策略,即策略模式,与工厂模式确实很像,但他确确实实不是工厂模式,重点看人如何定义它,为了操作对象即为工厂模式,为了获取结果即为策略模式。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。