0
点赞
收藏
分享

微信扫一扫

量化交易之设计模式篇 - 策略模式


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

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

// 策略基类
class COperation {
public:
COperation() = default;
virtual ~COperation() = default;

virtual double getResult() = 0;

protected:
int m_first;
int m_second;
};

// 策略具体类
class AddOperation: public COperation {
public:
AddOperation(int first, int second) {
this->m_first = first;
this->m_second = second;
};
virtual ~AddOperation() = default;

virtual double getResult() override {
return this->m_first + this->m_second;
}
};

class SubOperation: public COperation {
public:
SubOperation(int first, int second) {
this->m_first = first;
this->m_second = second;
}
virtual ~SubOperation() = default;

virtual double getResult() override {
return this->m_first - this->m_second;
}
};

class MultiOperation: public COperation {
public:
MultiOperation(int first, int second) {
this->m_first = first;
this->m_second = second;
}
virtual ~MultiOperation() = default;

virtual double getResult() override {
return this->m_first * this->m_second;
}
};

class Context {
public:
Context(COperation* operationFunctionObj) {
this->m_operationFunctionObj = operationFunctionObj;
}

double getResult() {
return this->m_operationFunctionObj->getResult();
}

private:
COperation* m_operationFunctionObj;
};

int main() {
COperation* operationFunction = new MultiOperation(10, 5);
Context* context = new Context(operationFunction);

std::cout << context->getResult() << std::endl;

delete operationFunction;
delete context;

return 0;
}

举报

相关推荐

0 条评论