在此模式中,
演算法是從複雜類提取的
,因而可以
方便地替換
。 例如,如果要更改搜尋引擎中排列頁的方法,則策略模式是乙個不錯的選擇。思考一下搜尋引擎的幾個部分 —— 一部分遍歷頁面,一部分對每頁排列,另一部分基於排列的結果排序。在複雜的示例中,這些部分都在同乙個類中。通過使用策略模式,您可將排列部分放入另乙個 類中,以便更改頁排列的方式,而不影響搜尋引擎的其餘**。
作為乙個較簡單的示例,下面 顯示了乙個使用者列表類,它提供了乙個根據
一組即插即用的策略查詢一組使用者
的方法
//定義介面
inte***ce istrategy
//實現介面方式1
class findafterstrategy implements istrategy
public function filter($record)
}//實現介面方式1
class randomstrategy implements istrategy
}//主類
class userlist }}
public function add($name)
public function find($filter)
return $recs;
}}$ul = new userlist ( array (
"andy",
"jack",
"lori",
"megan"
) );
$f1 = $ul->find ( new findafterstrategy ( "j" ) );
print_r ( $f1 );
$f2 = $ul->find ( new randomstrategy () );
複製**
print_r ( $f2 );
策略模式非常適合複雜資料管理系統或資料處理系統,二者在資料篩選、搜尋或處理的方式方面需要較高的靈活性
PHP設計模式之策略模式
策略模式 將一組特定的行為和演算法封裝成類,以適應某些特定的上下文環境,這種模式就是策略模式 使用策略模式實現ioc,依賴倒置,控制反轉 假如乙個電商 系統,針對不同的人群要跳轉到不同的商品類目,並且所有廣告位展示不同的廣告 1.不會因為上下文的改變而改變 傳統都是使用ifelse來判斷 2.如果新...
PHP設計模式之策略模式
策略模式 將一組特定的行為和演算法封裝成類。以適應某些特定的上下文環境,這樣的模式就是策略模式 使用策略模式實現ioc,依賴倒置,控制反轉 假如乙個電商站點系統,針對不同的人群要跳轉到不同的商品類目。而且全部廣告位展示不同的廣告 1.不會由於上下文的改變而改變 傳統都是使用ifelse來推斷 2.假...
PHP設計模式之策略模式
以下文字部分均為本人自己的想法與總結所以未必正確 參考策略模式 概述 策略模式就是用來封裝演算法的,但在實踐中,我們發現可以用它來封裝幾乎任何型別的規則,只要在分析過程中聽到需要在不同時間應用不同的業務規則,就可以考慮使用策略模式處理這種變化的可能性。策略模式是一種定義一系列演算法的方法,從概念上來...