PHP設計模式之策略模式

2021-09-09 02:35:54 字數 1497 閱讀 5261

策略模式:將一組特定的行為和演算法封裝成類。以適應某些特定的上下文環境,這樣的模式就是策略模式

使用策略模式實現ioc, 依賴倒置, 控制反轉

假如乙個電商站點系統,針對不同的人群要跳轉到不同的商品類目。而且全部廣告位展示不同的廣告

1.不會由於上下文的改變而改變**(傳統都是使用ifelse來推斷)

2.假設新新增一種型別的使用者,僅僅須要新增一種策略就好了,不須要在**中ifelse裡面在繼續加入邏輯

3.不同的地方僅僅須要執行不同的策略就好了,這樣就可以解決這個問題

4.從硬編碼到解耦的使用

5.最基本的是攻克了程式中的分支邏輯

5.1 宣告策略的介面檔案
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設計模式之策略模式

策略模式 將一組特定的行為和演算法封裝成類,以適應某些特定的上下文環境,這種模式就是策略模式 使用策略模式實現ioc,依賴倒置,控制反轉 假如乙個電商 系統,針對不同的人群要跳轉到不同的商品類目,並且所有廣告位展示不同的廣告 1.不會因為上下文的改變而改變 傳統都是使用ifelse來判斷 2.如果新...

php設計模式之策略模式

在此模式中,演算法是從複雜類提取的 因而可以 方便地替換 例如,如果要更改搜尋引擎中排列頁的方法,則策略模式是乙個不錯的選擇。思考一下搜尋引擎的幾個部分 一部分遍歷頁面,一部分對每頁排列,另一部分基於排列的結果排序。在複雜的示例中,這些部分都在同乙個類中。通過使用策略模式,您可將排列部分放入另乙個 ...

PHP設計模式之策略模式

以下文字部分均為本人自己的想法與總結所以未必正確 參考策略模式 概述 策略模式就是用來封裝演算法的,但在實踐中,我們發現可以用它來封裝幾乎任何型別的規則,只要在分析過程中聽到需要在不同時間應用不同的業務規則,就可以考慮使用策略模式處理這種變化的可能性。策略模式是一種定義一系列演算法的方法,從概念上來...