策略模式:將一組特定的行為和演算法封裝成類,以適應某些特定的上下文環境,這種模式就是策略模式
使用策略模式實現ioc, 依賴倒置, 控制反轉
假如乙個電商**系統,針對不同的人群要跳轉到不同的商品類目,並且所有廣告位展示不同的廣告
1.不會因為上下文的改變而改變**(傳統都是使用5.1 宣告策略的介面檔案if
else
來判斷)2.如果新增加一種型別的使用者,只需要增加一種策略就好了,不需要在**中
if
else
裡面在繼續新增邏輯3.不同的地方只需要執行不同的策略就好了,這樣即可解決問題
4.
從硬編碼到解耦的使用
5.
最主要的是解決了程式中的分支邏輯
inte***ce
userstrategy
5.2定義女性使用者的策略class
femaleuserstrategy
implements
userstrategy
function
showcategory
()
}
5.3定義男性使用者的策略class
maleuserstrategy
implements
userstrategy
function
showcategory
()
}
class
page
else
if (isset($_get['famale']))
//如果新增了業務邏輯後面會很多的 if else
//策略模式的輸出
echo
$this->strategy->showad();
echo'';
echo
$this->strategy->showcategory();
}//策略模式來解決,註冊策略
function
setstrategy
(userstrategy $strategy)
}//執行
$page = new page;
//這裡根據實際上下文的環境
if (isset($_get['famale'])) else
if (isset($_get['male']))
//使依賴關係反轉,最終執行在使用關係繫結,輸出結果(解決了傳統寫法的耦合問題)
$page->setstrategy($strategy);
$page->index();
php設計模式之策略模式
在此模式中,演算法是從複雜類提取的 因而可以 方便地替換 例如,如果要更改搜尋引擎中排列頁的方法,則策略模式是乙個不錯的選擇。思考一下搜尋引擎的幾個部分 一部分遍歷頁面,一部分對每頁排列,另一部分基於排列的結果排序。在複雜的示例中,這些部分都在同乙個類中。通過使用策略模式,您可將排列部分放入另乙個 ...
PHP設計模式之策略模式
策略模式 將一組特定的行為和演算法封裝成類。以適應某些特定的上下文環境,這樣的模式就是策略模式 使用策略模式實現ioc,依賴倒置,控制反轉 假如乙個電商站點系統,針對不同的人群要跳轉到不同的商品類目。而且全部廣告位展示不同的廣告 1.不會由於上下文的改變而改變 傳統都是使用ifelse來推斷 2.假...
PHP設計模式之策略模式
以下文字部分均為本人自己的想法與總結所以未必正確 參考策略模式 概述 策略模式就是用來封裝演算法的,但在實踐中,我們發現可以用它來封裝幾乎任何型別的規則,只要在分析過程中聽到需要在不同時間應用不同的業務規則,就可以考慮使用策略模式處理這種變化的可能性。策略模式是一種定義一系列演算法的方法,從概念上來...