定義一族算法類,將每一個算法分別封裝起來,讓它們能夠互相替換。策略模式可使算法的變化獨立於使用它們的客戶端 (這裏的客戶端代指使用算法的代碼)算法
策略模式分爲三部分 策略的定義、建立、使用bash
interface Strategy
{
}
class StrategyA implements Strategy
{
//策略A
}
class StrategyB implements Strategy
{
//策略B
}
複製代碼
class StrategyFactory { public function getStrategy($type): Strategy { if ($type == "a") { return new StrategyA(); } return new StrategyB(); } } 複製代碼
class OrderService { public function SubOrder($order) { $strategyType = $order['strategyType']; $strategy = StrategyFactory::getStrategy($strategyType); //$strategy->doSomething(); } } 複製代碼
在策略建立時, 若是你想真正的徹底消除, 能夠在策略建立實現map表, 根據map表查找進行對象建立. 這時候須要權衡利弊。markdown