該文章屬於《程式設計中的那些經典套路——設計模式彙總》系列,並且以下內容基於語言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
?>
根據不同的情況使用不同的策略,即策略模式,與工廠模式確實很像,但他確確實實不是工廠模式,重點看人如何定義它,為了操作物件即為工廠模式,為了獲取結果即為策略模式。