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