該文章屬於《編程中的那些經典套路——設計模式彙總》系列,而且如下內容基於語言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