0
点赞
收藏
分享

微信扫一扫

量化交易之设计模式篇 - 简单工厂模式


//
// Created by win10 on 2021/11/16.
//

#include <thread>
#include <iostream>
using namespace std;

/*
* 简单工厂模式:
* 核心思想是用一个工厂来 根据输入的条件产生不同的类,然后根据不同类的 virtual 函数得到不同的结果。
*/
class COperation {
public:
COperation() = default;
virtual ~COperation() = default;
virtual double getResult() = 0;

public:
int m_first{};
int m_second{};
};

class AddOperation: public COperation {
public:
double getResult() override {
return this->m_first + this->m_second;
}
AddOperation() = default;
~AddOperation() = default;
};

class SubOperation: public COperation {
public:
double getResult() override {
return this->m_first - this->m_second;
}
SubOperation() = default;
~SubOperation() = default;
};

class MultiOperation: public COperation {
public:
double getResult() override {
return this->m_first * this->m_second;
}
MultiOperation() = default;
~MultiOperation() = default;
};

// 工厂类
class Factory {
public:
static COperation* create(char operationType);
};
COperation *Factory::create(char operationType) {

COperation* operation;
switch (operationType) {
case '+': {
operation = new AddOperation();
break;
}
case '-': {
operation = new SubOperation();
break;
}
case '*': {
operation = new MultiOperation();
break;
}
default: {
throw std::exception((string("Bad operationType: ") + operationType).c_str());
}
}

return operation;
}

int main() {

COperation* operation = Factory::create('*');

operation->m_first = 5;
operation->m_second = 10;

std::cout << "result: " << operation->getResult() << std::endl;

delete operation;

return 0;
}

举报

相关推荐

0 条评论