1. 程式人生 > >建立型模式--工廠方法模式

建立型模式--工廠方法模式

#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; }