策略模式:php
策略模式咱們沒法經過字面意思來理解了:java
首先,建立一個接口,定義子類的實現規範;ide
第二步,根據不一樣的業務邏輯,書寫不一樣的方法,同時實現第一步中的接口.
this
第三步,寫一個獨立的類,其中有兩個方法,第一個爲初始化(傳入第二步中的子類的對象),第二個方法 爲統一的執行類(固然有了接口這個也能夠省略了).
spa
以下圖:3d
下面是一個完整的demo:excel
<?php 對象
//經過接口定義子類實現規範blog
interface Strategy{ 接口
public function echoInfo();
}
//實現方法,而且每一個都用不一樣的業務邏輯(phper,javaer)
class Phper implements Strategy{
public function echoInfo()
{
echo "this is phper class";
}
}
class Javaer implements Strategy{
public function echoInfo()
{
echo "this is javaser class";
}
}
//創建一個獨立的類,經過其中的一個方法,傳入不一樣的對象來實現不一樣的處理過程
class Done{
//用來存儲實例化的對象
private $obj;
//經過傳入對象將對象賦給私有屬性
public function __construct(Strategy $obj)
{
$this->obj=$obj;
}
//經過統一的實現方法來實現不一樣的對象內部的方法(由於有接口的限制,這個也能夠省略)
public function go()
{
$this->obj->echoInfo();
}
}
//實例化獨立的類,傳入不一樣的對象參數
$obj=new Done(new Javaer);
//輸出結果
$obj->go();
?>
策略模式通常用在一些輸出結果須要多樣話的地方,好比客戶可能導出excel表,也可能導出word文件,或者生成一個柱狀圖等等.