設計モードの工場方法モード(c++)
ファクトリメソッドモード定義
オブジェクトを作成するためのインタフェースを定義し、サブクラスにどのクラスをインスタンス化するかを決定させます.核心構造はそれぞれ抽象工場と具体的な工場、抽象製品と具体的な製品である.
オブジェクトを作成するためのインタフェースを定義し、サブクラスにどのクラスをインスタンス化するかを決定させます.核心構造はそれぞれ抽象工場と具体的な工場、抽象製品と具体的な製品である.
#include
using namespace std;
//
class IWine
{
public:
virtual ~IWine(){}
virtual void createWine() = 0;
};
//
class IFactory
{
public:
virtual ~IFactory(){}
virtual IWine* createFactory() = 0;
};
//
class Beer :public IWine
{
public:
void createWine()
{
cout << " " << endl;
}
};
//
class Spirit :public IWine
{
public:
void createWine()
{
cout << " " << endl;
}
};
//
class RedWine :public IWine
{
public:
void createWine()
{
cout << " " << endl;
}
};
//
class BeerFactory :public IFactory
{
public:
IWine* createFactory()
{
return new Beer;
}
};
//
class SpiritFactory :public IFactory
{
public:
IWine* createFactory()
{
return new Spirit;
}
};
//
class RedWineFactory :public IFactory
{
public:
IWine* createFactory()
{
return new RedWine;
}
};
int main() //
{
IFactory *factory = nullptr;
//factory = new BeerFactory;
//factory = new RedWineFactory;
factory = new SpiritFactory;
if (factory)
{
factory->createFactory()->createWine();
delete factory;
factory = nullptr;
}
return 0;
}