时间:2021-07-01 10:21:17 帮助过:26人阅读
<?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策略模式的代码分享
星际争霸之php策略模式
以上就是PHP设计模式之策略模式详解的详细内容,更多请关注Gxl网其它相关文章!