/* ²ßÂÔģʽ£º¶¨ÒåÁËËã·¨×壬·Ö±ð·â×°ÆðÀ´£¬ÈÃËüÃÇÖ®¼ä¿ÉÒÔ»¥ÏàÌæ»»£¬ ´ËģʽÈÃËã·¨µÄ±ä»¯¶ÀÁ¢ÓÚʹÓÃËã·¨µÄ¿Í»§¡£ */ #include using namespace std; class QuackBehavior { public: virtual void Quack() = 0; }; class FlyBehavior { public: virtual void Fly() = 0; }; class Duck { public: void Swim() { cout Quack(); } void PerformFly() { pFlyBehavior_->Fly(); } void SetFlyBehavior(FlyBehavior* pFlyBehavior) { pFlyBehavior_ = pFlyBehavior; } void SetQuackBehavior(QuackBehavior* pQuackBehavior) { pQuackBehavior_ = pQuackBehavior; } private: QuackBehavior* pQuackBehavior_; FlyBehavior* pFlyBehavior_; }; class SqueakDuck:public Duck { void Display() { cout SetFlyBehavior(new SqueakFlyBehavior); d->PerformFly(); d->SetQuackBehavior(new SqueakSquckBehavior); d->PerformQuack(); system("pause"); return 0; }