程式設計中的那些套路——關於策略模式

weixin_33806914發表於2016-06-18

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

根據不同的情況使用不同的策略,即策略模式,與工廠模式確實很像,但他確確實實不是工廠模式,重點看人如何定義它,為了操作物件即為工廠模式,為了獲取結果即為策略模式。

該文章屬於《程式設計中的那些經典套路——設計模式彙總》系列

相關文章