设计模式入门1——简单工厂模式(OperationFactory)
来源:互联网 发布:为什么移动4g网络很慢 编辑:程序博客网 时间:2024/06/03 21:53
从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。[From baike.baidu.com]
/*******************************************************///名称:简单工厂模式(OperationFactory)//时间:2014年4月4日11:49:21//作者:Lynch/*******************************************************/#pragma once#include"OperationFactory.h"int main(){int a,b;char oper;while(true){cout<<"Please input num1,num2,and operators(+,-,*,/,^)"<<endl;cin>>a>>b>>oper;OperationFactory *of=new OperationFactory();//创建操作符工厂模式Operation *op=of->CreateOperation(oper);//根据操作符创建对应的类op->setNum1(a);op->setNum2(b);cout<<op->getResult()<<endl;delete op;delete of;}return 0;}
#pragma once#include"Operation.h"//基类#include"AddOperation.h"//加法类#include"SubOperation.h"//减法类#include"MulOperation.h"//乘法类#include"DivOperation.h"//除法类#include"InvOperation.h"//乘方类class OperationFactory{public:Operation *CreateOperation(char oper){Operation *op=NULL;switch(oper){case'+':op=new AddOperation();break;case'-':op=new SubOperation();break;case'*':op=new MulOperation();break;case'/':op=new DivOperation();break;case'^':op=new InvOperation();break;default:break;}return op;}};
#pragma once#include<iostream>using namespace std;class Operation{public:void setNum1(int num1){this->num1=num1;}void setNum2(int num2){this->num2=num2;}virtual int getResult()=0;//纯虚函数,不允许Operation类实例化对象protected:int num1;int num2;};
#pragma once#include"Operation.h"class AddOperation:public Operation{public:virtual int getResult(){return num1+num2;}};
#pragma once#include"Operation.h"class DivOperation:public Operation{public:virtual int getResult(){if(num2==0){cerr<<"Cannot be divided by 0!"<<endl;exit(1);}return num1/num2;}};
#pragma once#include"Operation.h"#include<cmath>//involution乘方运算class InvOperation:public Operation{public:virtual int getResult(){return pow((double)num1,(double)num2);}};
#pragma once#include"Operation.h"class MulOperation:public Operation{public:virtual int getResult(){return num1*num2;}};
#pragma once#include"Operation.h"class SubOperation:public Operation{public:virtual int getResult(){return num1-num2;}};
代码布局:
运行效果:
0 0
- 设计模式入门1——简单工厂模式(OperationFactory)
- 简单工厂设计模式(OperationFactory)
- zt:工厂模式-简单工厂(设计模式的入门级模式—初级)
- 设计模式入门1——简单工厂模式(AudiFactory)
- 设计模式练习(1)——简单工厂模式
- java设计模式(1)——简单工厂模式
- 设计模式——工厂模式(简单工厂)
- 设计模式之——工厂模式(简单工厂模式1)
- 设计模式入门——工厂模式
- 设计模式系列——三个工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)
- 设计模式系列——三个工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)
- Qt设计模式系列——三个工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)
- 设计模式系列——三个工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)
- 设计模式系列——三个工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)
- 设计模式系列——三个工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)
- 设计模式系列——三个工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)
- 设计模式(2)——简单工厂设计模式
- Java设计模式-工厂模式(1)简单工厂模式
- 为iOS 7而开发 并支持iOS 6
- jstl中list嵌套map
- 三.使用OpenCv从摄像头获取视频和从文件播放视频
- SharedPreferences使用
- 关于mono for android 滑动目录控件的使用 SlidingMenuSharp 控件
- 设计模式入门1——简单工厂模式(OperationFactory)
- 用activity打开系统浏览器
- eclipse导入myeclipse的web项目没法识别问题解决
- 学习笔记 --- LINUX 应用调试之使用strace命令追踪系统调用
- makefile--运行
- 拷贝Eclipse Workspace的设置
- vc操作excel
- DSP28335的GPIO外设中断
- Android之日期及时间选择对话框