本文介绍了做了一个工厂方法的例子的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
// Factory Method && RAII
#pragma warning(disable:4996)
#include <iostream>
#include <memory>
using namespace std;
struct IClock
{
virtual ~IClock() {}
};
class AtomicClock : public IClock
{
public:
AtomicClock() { cout << "AtomicClock()" << endl; }
~AtomicClock() { cout << "~AtomicClock()" << endl; }
private:
};
class WaterClock : public IClock
{
public:
WaterClock() { cout << "WaterClock()" << endl; }
~WaterClock() { cout << "~WaterClock()" << endl; }
private:
};
class WristClock : public IClock
{
public:
WristClock() { cout << "WristClock()" << endl; }
~WristClock() { cout << "~WristClock()" << endl; }
private:
};
//--------------------------------------------------
struct IClockFactory
{
virtual IClock* createClock() = 0;
virtual ~IClockFactory() {};
};
class AtomicFactory : public IClockFactory
{
public:
virtual IClock* createClock() { return new AtomicClock; }
};
class WaterFactory : public IClockFactory
{
public:
virtual IClock* createClock() { return new WaterClock; }
};
class WristFactory : public IClockFactory
{
public:
virtual IClock* createClock() { return new WristClock; }
};
int main(int argc, char* argv[])
{
//사용자 입력
argv[1] = ( char* )malloc(sizeof( char )* 10);
strcpy(argv[1], "Atomic");
IClockFactory* p;
if (strcmp(argv[1], "Atomic"))
p = new AtomicFactory;
else if (strcmp(argv[1], "Water"))
p = new WaterFactory;
else if (strcmp(argv[1], "Wrist"))
p = new WristFactory;
else
return 0;
unique_ptr<IClock> pClock(p->createClock());
}
我做了一个示例c ++代码,用于理解工厂方法。
我想要检查我做的是否正确。
我会接受任何意见。
谢谢
I made an example c++ code for understanding factory method.
I want to check if what I did is right.
I'll take any opinions.
Thank you
推荐答案
这篇关于做了一个工厂方法的例子的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!