public static function main(array $args = array()) { $mallard = new MallardDuck(); $rubberDuckie = new RubberDuck(); $decoy = new DecoyDuck(); $model = new ModelDuck(); $mallard->performQuack(); $rubberDuckie->performQuack(); $decoy->performQuack(); $model->performFly(); $model->setFlyBehavior(new FlyRocketPowered()); $model->performFly(); }
<?php include_once 'pattern/Duck.php'; $obj = new RubberDuck(); $obj->display();
{ echo 'Fly with wings'; } } class FlyWithNo implements FlyBehavior { public function fly() { echo 'Fly with no wings'; } } class Duck { private $flyBehavior; public function performFly() { $this->flyBehavior->fly(); } public function setFlyBehavior(FlyBehavior $flyBehavior) { $this->flyBehavior = $flyBehavior; } } class RubberDuck extends Duck { } $duck = new RubberDuck(); $duck->setFlyBehavior(new FlyWithWings()); $duck->performFly(); $duck->setFlyBehavior(new FlyWithNo()); $duck->performFly();
{ $this->flyBehavior = new FlyWithWings(); $this->quackBehavior = new Quacks(); $this->name = "红头鸭\n"; } } class MallardDuck extends Duck { public function __construct() { $this->flyBehavior = new FlyWithWings(); $this->quackBehavior = new Squeak(); $this->name = "绿头鸭\n"; } } //--------------------------------------- //测试上面的代码 //--------------------------------------- $rubberDuck = new RubberDuck(); $redHeadDuck = new RedHeadDuck(); $mallardDuck = new MallardDuck(); //依次执行行为 $rubberDuck->display(); $rubberDuck->peformFly(); $rubberDuck->peformQuack(); //更改行为 $rubberDuck->setFlyBehavior(new FlyWithWings()); $rubberDuck->setQuackBehavior(new Quacks()); //执行更改后的行为 $rubberDuck->peformFly(); $rubberDuck->peformQuack();
<?php include 'lib/black_duck.php'; $duck = new BlackDuck(); $duck->description(); $duck->fly(); $duck->quack(); include 'lib/rubber_duck.php'; $duck = new RubberDuck(); $duck->description(); $duck->fly(); $duck->quack();
<?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();
<?php require_once 'Ducks/DecoyDuck.php'; require_once 'Ducks/MallardDuck.php'; require_once 'Ducks/ModelDuck.php'; require_once 'Ducks/RedHeadDuck.php'; require_once 'Ducks/RubberDuck.php'; $mallard = new MallardDuck(); $rubber = new RubberDuck(); $decoy = new DecoyDuck(); $model = new ModelDuck(); $mallard->performQuack(); $rubber->performQuack(); $decoy->performQuack(); echo "<hr/>"; $mallard->performFly(); $rubber->performFly(); $decoy->performFly(); echo "<hr/>"; $model->performFly(); $model->setFlyBehavior(new FlyRocketPowered()); $model->performFly();