工厂模式
来源:互联网 发布:mac 编译php7 编辑:程序博客网 时间:2024/06/05 15:05
通过大话设计模式一书学习后,c++编写的设计模式代码:
// OOTest.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "Operation.h"#include "OperationFactory.h"int _tmain(int argc, _TCHAR* argv[]){double resurt=0;OperationFactory factory;Operation *father = factory.createFactory('+');father->setAB(2,3);resurt = father->getResurt();cout << "add" << resurt << endl;system("pause");return 0;}---------------工厂类-----------#pragma once#include "iostream"using namespace std;#include "Operation.h"#include "OperationAdd.h"#include "OperationSub.h"class OperationFactory{public:OperationFactory(void);~OperationFactory(void);Operation * createFactory(char operation);};#include "StdAfx.h"#include "OperationFactory.h"OperationFactory::OperationFactory(void){}OperationFactory::~OperationFactory(void){}Operation * OperationFactory::createFactory(char operation){Operation * oper = NULL ;switch(operation){case '+':oper = new OperationAdd();break;case '-':oper = new OperationSub();break;default:cout << "err" << endl;}return oper;}---------------父类-----------#pragma onceclass Operation{public:Operation(void);virtual ~Operation(void);virtual double getResurt();void setAB(double numA, double numB);public:double mNumberA;double mNumberB;};#include "StdAfx.h"#include "Operation.h"Operation::Operation(void){}Operation::~Operation(void){}double Operation::getResurt(){return 0;}void Operation::setAB(double numA, double numB){this->mNumberA = numA;this->mNumberB = numB;}---------------ADD类-----------#pragma once#include "operation.h"class OperationAdd :public Operation{public:OperationAdd(void);~OperationAdd(void);double getResurt();double getA();};#include "StdAfx.h"#include "OperationAdd.h"OperationAdd::OperationAdd(void){}OperationAdd::~OperationAdd(void){}double OperationAdd::getResurt(){return mNumberA+mNumberB;}double OperationAdd::getA(){return mNumberA;}---------------SUB类-----------#pragma once#include "operation.h"class OperationSub :public Operation{public:OperationSub(void);~OperationSub(void);double getResurt();};#include "StdAfx.h"#include "OperationSub.h"OperationSub::OperationSub(void){}OperationSub::~OperationSub(void){}double OperationSub::getResurt(){return mNumberA-mNumberB;}
1 0
- 工厂模式 -- 工厂方法
- 工厂模式 -- 抽象工厂
- 工厂模式-简单工厂
- 工厂模式-工厂方法
- 工厂模式:静态工厂
- 工厂模式-简单工厂
- 工厂模式-抽象工厂
- 工厂模式-工厂方法
- 工厂 > 工厂方法模式
- 工厂模式-静态工厂
- 工厂模式-抽象工厂
- 工厂模式
- 工厂模式
- 工厂模式
- 工厂模式
- 工厂模式
- 工厂模式
- 工厂模式
- kvm克隆虚拟机后不能启动网卡
- 232接口无线模块 433M透传模块 智能抄表模块
- Android 实时获取麦克风输入音量的代码
- rtf文件格式
- innerHTML用法
- 工厂模式
- c#开发简单的计算器 (可连续计算)
- 机房收费系统(个人版)基础知识——ADO.NET
- BOM(1)—事件
- chipscope影响布局布线,会不会影响逻辑功能(很详细)
- JavaWeb中servlet中response.setCharacterEncoding,getRealPath方法未定义的解决
- 5.jQuery 基础DOM 和CSS 操作
- Http 协议的缓存(一)
- 28留数及其应用(四)