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

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

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

相關文章
相關標籤/搜索