工廠模式

業務邏輯.hios

#pragma once
class Operation
{
protected:
 double numberA;
 double numberB;
 double result;
public:
 void setValue(double numberA, double numberB)
 {
  this->numberA = numberA;
  this->numberB = numberB;
 }
 virtual double getValue() = 0;
};
class OperationAdd :public Operation
{
public:
 double getValue()
 {
  result = numberA + numberB;
  return result;
 }
};
class OperationSub :public Operation
{
public:
 double getValue()
 {
  result = numberA - numberB;
  return result;
 }
};

工廠.hide

#pragma once
#include "業務邏輯.h"
class OperationFactory
{
public:
 virtual Operation* CreateOperation() = 0;
};
class AddFactory:public OperationFactory
{
public:
 Operation* CreateOperation()
 {
  return new OperationAdd;
 }
};
class SubFactory:public OperationFactory
{
public:
 Operation* CreateOperation()
 {
  return new OperationSub;
 }
};

界面邏輯.hthis

#include <iostream>
using namespace std;
#include "工廠.h"
int main()
{
 double numberA;
 double numberB;
 char operate;
 cout << "請輸入a+b的式子:" << endl;
 cin >> numberA >> operate >> numberB;
 Operation *oper
 OperationFactory *opr;
 switch (operate)
 {
 case '+':
  opr = new AddFactory;
  break;
 case '-':
  opr = new SubFactory;
  break;
 }
 oper = opr->CreateOperation();
 oper->setValue(numberA, numberB);
 cout << "結果爲" << oper->getValue() << endl;
 system("pause");
 return 0;
}
相關文章
相關標籤/搜索