策略模式主要用来由不同的方式解决同样的问题
#include "stdafx.h"
#include "ioStream.h"
const GIF = 1;
const JPEG = 2;
//抽象类
class ImageSaver {
public:
virtual void save() = 0;//定义save()方法
};
class GIFSaver :public ImageSaver {
public:
virtual void save() {//实现save()方法
cout << "将图片保存成GIF格式" << endl;
}
};
class JPEGSaver :public ImageSaver {
public:
virtual void save() {//实现save()方法
cout << "将图片保存成GIF格式" << endl;
}
};
class TypeChooser {
public:
static ImageSaver* getSaver(int type) {
if (type == GIF) {//使用if else语句来判断图片的类型
return new GIFSaver();
} else if (type == JPEG) {
return new JPEGSaver();
}else {
return NULL;
}
}
};
int main(int argc, char* argv[])
{
cout << "用户选择了GIF格式:" << endl;
ImageSaver *saver = TypeChooser::getSaver(GIF);//获得保存图片为GIF类型的对象
saver->save();
cout << "用户选择了JPEG格式:" << endl;//获得保存图片为JPEG类型的对象
saver = TypeChooser::getSaver(JPEG);
saver->save();
return 0;
}