建立型模式--工廠方法模式
阿新 • • 發佈:2018-11-17
#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;
}