PHP設計模式之策略模式

2021-10-03 05:37:32 字數 1114 閱讀 7436

以下文字部分均為本人自己的想法與總結所以未必正確;

參考策略模式:

概述: 策略模式就是用來封裝演算法的,但在實踐中,我們發現可以用它來封裝幾乎任何型別的規則,只要在分析過程中聽到需要在不同時間應用不同的業務規則,就可以考慮使用策略模式處理這種變化的可能性。

策略模式是一種定義一系列演算法的方法,從概念上來看,所有這些演算法完成的都是相同的工作,只是實現不同,它可以以相同的方式呼叫所有的演算法,減少了各種演算法類與使用演算法類之間的耦合。事實上你可以將乙個繼承自抽象策略類的稱為具體策略,就是策略模式中的策略1,策略2......

優點: 策略模式的strategy類層次為context定義了一系列的可供重用的演算法或行為。繼承有助於析取出這些演算法的公共功能。策略模式的另乙個優點是簡化了單元測試,因為每個演算法都有自己的類,可以通過自己的介面單獨測試。

<?php

/** * abstract class

*/abstract class strategy

/** * 演算法a

*/class concretestrategya extends strategy

}/**

* 演算法b

*/class concretestrategyb extends strategy

}/**

* 演算法a

*/class concretestrategyc extends strategy

}/**

* 上下文context

*/class context

public function contextinte***ce()

}//客戶端**

$context = new context(new concretestrategya());

$context->contextinte***ce();

$context = new context(new concretestrategyb());

$context->contextinte***ce();

$context = new context(new concretestrategyc());

$context->contextinte***ce();

PHP設計模式之策略模式

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

php設計模式之策略模式

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

PHP設計模式之策略模式

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