_flyBehavior->fly();//2、做调用飞行功能的中间桥梁 } public function setFlyBehavior(FlyBehavior $behavior) { $this->_flyBehavior = $behavior;//1、记录飞行方式 }} class RubberDuck extends Duck{}// Test Case$duck = new RubberDuck(); /* 想让鸭子用翅膀飞行 */$duck->setFlyBehavior(new FlyWithWings());$duck->performFly(); /* 想让鸭子不用翅膀飞行 */$duck->setFlyBehavior(new FlyWithNo());$duck->performFly();