策略设计模式C++实现:
#include <iostream>
using namespace std;
#define GIF 1
#define JPEG 2
//Interface
class ImageSaver
{
public:
virtual void save()=0;
};
class GIFSaver:public ImageSaver
{
public:
virtual void save()
{
cout<<"save GIF"<<endl;
}
};
class JPEGSaver:public ImageSaver
{
public:
virtual void save()
{
cout<<"save GIF"<<endl;
}
};
class TypeChooser
{
public:
static ImageSaver* getSaver(int type)
{
if(type==GIF)
{
return new GIFSaver();
}
else if(type==JPEG)
{
return new JPEGSaver();
}
else
{
return NULL;
}
}
};
int main()
{
ImageSaver *saver=TypeChooser::getSaver(GIF);
saver->save();
saver=TypeChooser::getSaver(JPEG);
saver->save();
return 0;
}