/*
²ßÂÔģʽ£º¶¨ÒåÁËËã·¨×壬·Ö±ð·â×°ÆðÀ´£¬ÈÃËüÃÇÖ®¼ä¿ÉÒÔ»¥ÏàÌæ»»£¬
´ËģʽÈÃËã·¨µÄ±ä»¯¶ÀÁ¢ÓÚʹÓÃËã·¨µÄ¿Í»§¡£
*/
#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;
}