十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
策略模式:
策略模式我們無法通過字面意思來理解了:
首先,創(chuàng)建一個接口,定義子類的實(shí)現(xiàn)規(guī)范;
第二步,根據(jù)不同的業(yè)務(wù)邏輯,書寫不同的方法,同時實(shí)現(xiàn)第一步中的接口.
第三步,寫一個獨(dú)立的類,其中有兩個方法,第一個為初始化(傳入第二步中的子類的對象),第二個方法 為統(tǒng)一的執(zhí)行類(當(dāng)然有了接口這個也可以省略了).
如下圖:
下面是一個完整的demo:
//通過接口定義子類實(shí)現(xiàn)規(guī)范
interface Strategy{
public function echoInfo();
}
//實(shí)現(xiàn)方法,并且每個都用不同的業(yè)務(wù)邏輯(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";
}
}
//建立一個獨(dú)立的類,通過其中的一個方法,傳入不同的對象來實(shí)現(xiàn)不同的處理過程
class Done{
//用來存儲實(shí)例化的對象
private $obj;
//通過傳入對象將對象賦給私有屬性
public function __construct(Strategy $obj)
{
$this->obj=$obj;
}
//通過統(tǒng)一的實(shí)現(xiàn)方法來實(shí)現(xiàn)不同的對象內(nèi)部的方法(因?yàn)橛薪涌诘南拗?這個也可以省略)
public function go()
{
$this->obj->echoInfo();
}
}
//實(shí)例化獨(dú)立的類,傳入不同的對象參數(shù)
$obj=new Done(new Javaer);
//輸出結(jié)果
$obj->go();
?>
策略模式一般用在一些輸出結(jié)果需要多樣話的地方,比如客戶可能導(dǎo)出excel表,也可能導(dǎo)出word文件,或者生成一個柱狀圖等等.
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。