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();
<?php function __autoload($class_name) { include $class_name . '.php'; } $mallard = new MallardDuck(); $mallard->display(); $mallard->swim(); $mallard->performQuack(); $mallard->performFly(); $model = new ModelDuck(); $model->display(); $model->swim(); $model->performQuack(); $model->performFly();
#绿头鸭,会呱呱叫,会飞 class MallardDuck extends Duck { 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); /** * 输出:
<?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();
<?php include_once __DIR__ . "/turkeyAdapter.php"; include_once __DIR__ . "/mallardDuck.php"; include_once __DIR__ . "/wildTurkey.php"; $duck = new MallardDuck(); $turkey = new wildTurkey(); $turkeyAdapter = new TurkeyAdapter($turkey); echo "The Turkey says ...\n"; echo $turkey->gobble(); echo $turkey->fly(); echo "The Dock says ...\n"; echo $duck->quack(); echo $duck->fly(); echo "The Adapter Turkey says ...\n"; echo $turkeyAdapter->quack(); echo $turkeyAdapter->fly();