structure.cpp
来自「自己写的c++实现的headfirst中的设计模式」· C++ 代码 · 共 77 行
CPP
77 行
/* 策略模式
*/
#include <iostream>
using namespace std;
class flyBeheviour
{
public:
virtual void fly()=0; //纯虚函数与虚函数
};
class flyble:public flyBeheviour
{
public:
void fly()
{
cout << "I'm flying!"<<endl;
}
};
class unflyble:public flyBeheviour
{
public:
void fly()
{
cout << "I cannot fly!"<<endl;
}
};
class duck //防止实例化?
{
protected:
//virtual duck(); //wrong!
flyBeheviour* f;
public:
void fly()
{
f->fly();
}
void setFlyBeheviour(flyBeheviour& f)
{
delete this->f;
this->f=&f;
}
~duck()
{
delete f;
}
};
class normalDuck:public duck
{
public:
normalDuck()
{
f=new flyble;
}
};
void structure_main()
{
normalDuck nd;
nd.fly();
//nd.setFlyBeheviour(unflyble);
nd.setFlyBeheviour(*(new unflyble));
nd.fly();
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?