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();
Example #3
0
    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
Example #4
0
<?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();