public static function main(array $args = array()) { $mallard = new MallardDuck(); $mallard->performQuack(); $mallard->performFly(); $model = new ModelDuck(); $model->performFly(); $model->setFlyBehavior(new FlyRocketPowered()); $model->performFly(); }
} } class MallardDuck extends Duck { function __construct() { $this->quackBehavior = new QuackLoud(); $this->flyBehavior = new FlyWithWings(); } public function display() { print "I'm a real Mallard duck\n"; } } class ModelDuck extends Duck { function __construct() { $this->flyBehavior = new FlyNoWay(); $this->quackBehavior = new QuackLoud(); } public function display() { print "I'm a model duck"; } } $mallard = new MallardDuck(); $mallard->performQuack(); $mallard->performFly(); $mallard->setFlyBehavior(new FlyRocketPowered()); $mallard->performFly();
public function __construct() { $this->quackBehavior = new Qquack(); $this->flyBehavior = new FlyNoWay(); } public function display() { println("I'm a real Mallard duck"); } } println(SEPARATE, '策略模式', SEPARATE); showImgs('1.png', '1_1.png'); $mallar = new MallardDuck(); $mallar->display(); $mallar->performQuack(); $mallar->performFly(); println(); $model = new ModelDuck(); $model->display(); $model->performQuack(); $model->performFly(); #改变模型鸭的行为 println('change quack:'); $model->setQuackBehavior(new Squack()); $model->performQuack(); println(SEPARATE, 'END', SEPARATE); /** * 输出: I'm a real Mallard duck << Quack >> I can't fly
<?php //Подключаем файлы require_once "Duck.php"; require_once "MallardDuck.php"; require_once "RedHeadDuck.php"; require_once "RubberDuck.php"; require_once "FlyNoWay.php"; require_once "FlyWithWings.php"; //---------------------------------- $duck = new MallardDuck(new FlyWithWings()); $duck->performFly(); $duck->setFlyBehaviour(new FlyNoWay()); $duck->performFly(); echo "<hr>"; $duck = new RubberDuck(new FlyNoWay()); $duck->performFly();