策略模式,將一組特定的行為和演算法封裝成類,來適應某些特定的上下文環境,這種模式就是策略模式,策略模式用於演算法的自由切換和擴展,它是應用較為廣泛的設計模式之一。
<?php /* *策略模式 */ interface FlyBehavior { public function fly(); } class FlyWithWings implements FlyBehavior { public function fly() { echo "鸭子用翅膀飞行 \n"; } } class FlyWithNo implements FlyBehavior { public function fly() { echo "鸭子不用翅膀飞行 \n"; } } class Duck { private $_flyBehavior; public function performFly() { $this->_flyBehavior->fly(); } public function setFlyBehavior(FlyBehavior $behavior) //被外部调用设置策略的 { $this->_flyBehavior = $behavior; } } class RubberDuck extends Duck { } // Test Case $duck = new RubberDuck(); /* 想让鸭子用翅膀飞行 */ $duck->setFlyBehavior(new FlyWithWings()); $duck->performFly(); /* 想让鸭子不用翅膀飞行 */ $duck->setFlyBehavior(new FlyWithNo()); $duck->performFly();
策略模式用於演算法的自由切換和擴展,它是應用較廣泛的設計模式之一。策略模式對應於解決某一問題的演算法族,允許使用者從該演算法族中任選演算法來解決某一問題,同時可以方便地更換演算法或增加新的演算法。只要涉及演算法的封裝、重複使用和切換都可以考慮使用策略模式
相關推薦:
#以上是PHP設計模式之策略模式詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!