php設計模式--策略模式

策略模式:php

    策略模式咱們沒法經過字面意思來理解了:java

        首先,建立一個接口,定義子類的實現規範;ide

        第二步,根據不一樣的業務邏輯,書寫不一樣的方法,同時實現第一步中的接口.
this

        第三步,寫一個獨立的類,其中有兩個方法,第一個爲初始化(傳入第二步中的子類的對象),第二個方法   爲統一的執行類(固然有了接口這個也能夠省略了).
spa

以下圖:3d

wKiom1ZbrbjzmBriAABr6WDzVyQ876.png

下面是一個完整的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文件,或者生成一個柱狀圖等等.

相關文章
相關標籤/搜索