note 85081 added to language.oop5.patterns

From: Date: Thu, 14 Aug 2008 02:44:08 +0000
Subject: note 85081 added to language.oop5.patterns
Groups: php.notes 
Request: Send a blank email to php-notes+get-143478@lists.php.net to get a copy of this message
Strategy: <?php interface FlyBehavior { public function fly(); } interface QuackBehavior { public function quack(); } class FlyWithWings implements FlyBehavior { public function fly() { echo "I'm flying!!\n"; } } class FlyNoWay implements FlyBehavior { public function fly() { echo "I can't fly!\n"; } } class FlyRocketPowered implements FlyBehavior { public function fly() { echo "I'm flying with a rocket!\n"; } } class Qquack implements QuackBehavior { public function quack() { echo "Quack\n"; } } class Squeak implements QuackBehavior { public function quack() { echo "Squeak\n"; } } class MuteQuack implements QuackBehavior { public function quack() { echo "<< Silence >>\n"; } } abstract class Duck { protected $quack_obj; protected $fly_obj; public abstract function display(); public function performQuack() { $this->quack_obj->quack(); } public function performFly() { $this->fly_obj->fly(); } public function swim() { echo "All ducks float, even decoys!\n"; } public function setFlyBehavior(FlyBehavior $fb) { $this->fly_obj = $fb; } public function setQuackBehavior(QuackBehavior $qb) { $this->quack_obj = $qb; } } class ModelDuck extends Duck { public function __construct() { $this->fly_obj = new FlyNoWay(); $this->quack_obj = new MuteQuack(); } public function display() { echo "I'm a model duck!\n"; } } $model = new ModelDuck(); $model->performFly(); $model->performQuack(); $model->setFlyBehavior(new FlyRocketPowered()); $model->setQuackBehavior(new Squeak()); $model->performFly(); $model->performQuack(); ?> ---- Server IP: 69.147.83.197 Probable Submitter: 219.133.62.73 ---- Manual Page -- http://www.php.net/manual/en/language.oop5.patterns.php Edit -- https://master.php.net/note/edit/85081 Del: integrated -- https://master.php.net/note/delete/85081/integrated Del: useless -- https://master.php.net/note/delete/85081/useless Del: bad code -- https://master.php.net/note/delete/85081/bad+code Del: spam -- https://master.php.net/note/delete/85081/spam Del: non-english -- https://master.php.net/note/delete/85081/non-english Del: in docs -- https://master.php.net/note/delete/85081/in+docs Del: other reasons-- https://master.php.net/note/delete/85081 Reject -- https://master.php.net/note/reject/85081 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#143478) next »