php 接口实现策略模式
<?php /** * 抽象策略角色,以接口实现 * interface只包含方法、委托或事件的签名; */ interface FlyInterface { public function fly(); } /** * 具体策略A:用翅膀飞行 */ class FlyWithWing implements FlyInterface { public function fly() { echo "我用翅膀飞行\n"; } } /** * 具体策略角色B:用脚飞行 */ class FlyWithFoot implements FlyInterface { public function fly() { echo "我用脚飞行\n"; } } /** * 主类角色 */ class Duck { private $_fly; private $_flyInterface = "FlyWithWing"; /* 引用的策略 */ public function __construct($flyInterface) { if(!empty($flyInterface)){ $this->_flyInterface = $flyInterface ; } $this->_fly = new $this->_flyInterface; } public function fly() { $this->_fly->fly(); } } $ducka = new Duck("FlyWithWing"); $ducka->fly(); $duckb = new Duck("FlyWithFoot"); $duckb->fly(); ?>