#include <iostream>
using namespace std;
class BreadMaker
{
public:
virtual void GetBread()
{
// NOTING
}
};
// 黑面包代码
class BlackBread : public BreadMaker
{
public:
void GetBread()
{
cout << "小面烤出了黑面包" << endl;
}
};
// 蜂蜜面包代码
class HoneyBread : public BreadMaker
{
public:
void GetBread()
{
cout << "小面烤出了蜂蜜面包" << endl;
}
}
// 白面包代码
class WhiteBread : public BreadMaker
{
public:
void GetBread()
{
cout << "小面烤出了白面包" << endl;
}
}
class IFactory
{
public:
virtual BreadMaker CreateBread() = 0;
}
// 黑面包工厂
class BlackBreadFactory : public IFactory
{
public:
BreadMaker* CreateBread()
{
return new BlackBread();
}
}
// 蜂蜜面包工厂
class HoneyBreadFactory : public IFactory
{
public:
BreadMaker* CreateBread()
{
return new HoneyBread();
}
}
// 白面包工厂
class WhiteBreadFactory : public IFactory
{
public:
BreadMaker* CreateBread()
{
return new WhiteBread();
}
}
int main()
{
BreadMaker *breadMaker = NULL;
cout << "小面的面包店开业了!" << endl;
cout << "顾客要黑面包" << endl;
IFactory *breadFactory = new BlackBreadFactory();
breadMaker = breadFactory->CreateBread();
breadMaker->GetBread();
cout << "顾客要蜂蜜面包" << endl;
IFactory *breadFactory = new HoneyBreadFactory();
breadMaker = breadFactory->CreateBread(); breadMaker->GetBread();
cout << "顾客要白面包" << endl;
IFactory *breadFactory = new WhiteBreadFactory();
breadMaker = breadFactory->CreateBread();
breadMaker->GetBread();
return 0;
}
创建型模式--工厂方法模式
猜你喜欢
转载自blog.csdn.net/teffi/article/details/81024812
今日推荐
周排行