//
// 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;
}
量化交易之设计模式篇 - 策略模式
最新推荐文章于 2022-09-18 19:39:27 发布