简单工厂模式的C++实现
用简单工厂模式实现一个计算器类:
#include <iostream>
#include <string> using namespace std; class Operation
{
public:
Operation(double numA = , int numB = ) : numberA(numA), numberB(numB)
{
}
virtual ~Operation()
{
cout << "~Operation()" << endl;
}
virtual double GetResult()
{
double result = ;
return result;
}
protected:
double numberA;
double numberB;
}; class OperationAdd : public Operation
{
public :
OperationAdd(double numA = , int numB = ) : Operation(numA, numB)
{
}
virtual ~OperationAdd()
{
cout << "~OperationAdd()" << endl;
}
virtual double GetResult()
{
double result = ;
result = numberA + numberB;
return result;
}
};
class OperationSub : public Operation
{
public :
OperationSub(double numA = , int numB = ) : Operation(numA, numB)
{
}
virtual ~OperationSub()
{
cout << "~OperationSub()" << endl;
}
virtual double GetResult()
{
double result = ;
result = numberA - numberB;
return result;
}
}; class OperationFactory
{
public :
virtual ~OperationFactory()
{
}
static Operation* createOperate(double numA, double numB, char operate)
{
Operation* oper;
switch (operate)
{
case '+' :
oper = new OperationAdd(numA, numB);
break;
case '-' :
oper = new OperationSub(numA, numB);
break;
default :
oper = ;
break;
}
return oper;
}
}; int main()
{
Operation* oper;
oper = OperationFactory::createOperate(, , '+');
double result = oper->GetResult();
cout << result << endl;
delete oper;
return ;
}
简单工厂模式实现计算器
简单工厂模式的抽象实现:
#include <iostream> using namespace std; class Product
{
public :
Product()
{
}
~Product()
{
}
virtual void CreateProduct()
{
}
private :
//
}; class ProductA : public Product
{
public :
ProductA() : Product()
{
cout << "ProductA()" << endl;
}
~ProductA()
{
cout << "~ProductA()" << endl;
}
virtual void CreateProduct()
{
}
}; class ProductB : public Product
{
public :
ProductB() : Product()
{
cout << "ProductB()" << endl;
}
~ProductB()
{
cout << "~ProductB()" << endl;
}
virtual void CreateProduct()
{
}
}; class SimpleFactory
{
public :
static Product* Create(int type)
{
//Product *prod;
switch (type)
{
case :
prod = new ProductA;
break;
case :
prod = new ProductB;
break;
default :
prod = ;
}
return prod;
}
~SimpleFactory()
{
delete prod;
}
private :
static Product *prod;
};
Product* SimpleFactory::prod = ; int main()
{
Product* prod;
prod = SimpleFactory::Create();
return ;
}
简单工厂模式
简单工厂模式的C++实现的更多相关文章
- PHP设计模式(一)简单工厂模式 (Simple Factory For PHP)
最近天气变化无常,身为程序猿的寡人!~终究难耐天气的挑战,病倒了,果然,程序猿还需多保养自己的身体,有句话这么说:一生只有两件事能报复你:不够努力的辜负和过度消耗身体的后患.话不多说,开始吧. 一.什 ...
- C#设计模式之简单工厂模式(Simple Factory)
1. 概述 简单工厂模式就是将一个类的实例化交给一个静态工厂来执行. 2. 使用频率 中 3. 模式结构 3.1 机构图 3.2 模式中的角色 Product:抽象类,把具体产品类公共的代码进行抽象和 ...
- 设计模式 — 简单工厂模式(Simple Factory)
定义:定义一个工厂类,它可以根据参数的不同返回不同类型的实例,被创建的实例通常有公共的父类. 模式类型:创建型模型 Factory(工厂角色):即工厂类,负责实现创建所有产品实例的内部逻辑:工厂类可以 ...
- C#设计模式(2)——简单工厂模式
一.概念:简单工厂模式(Simple Factory Pattern)属于类的创新型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern),是通过专门定义一个类来负责创 ...
- 设计模式之简单工厂模式Simple Factory(四创建型)
工厂模式简介. 工厂模式专门负责将大量有共同接口的类实例化 工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪一个类. 工厂模式有三种形态: 1.简单工厂模式Simple Factory ...
- 学习设计模式第二十七 - GoF之外简单工厂模式
示例代码来自<深入浅出设计模式>和<大话设计模式> 概述 简单工厂模式又被称为静态工厂模式,属于类的创建型模式.其实质是由一个工厂类根据传入的参量,动态决定应该创建出哪一个产品 ...
- Objective-C 工厂模式(上) -- 简单工厂模式
简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例.简单工厂 ...
- C#设计模式系列:简单工厂模式(Simple Factory)
1. 简单工厂模式简介 1.1 定义 简单工厂模式定义一个Factory类,可以根据参数的不同返回不同类的实例,被创建的实例通常有共同的父类. 简单工厂模式只需要一个Factory类. 简单工厂模式又 ...
- 《JS设计模式笔记》 2,简单工厂模式
<script type="text/javascript"> //简单工厂模式 //定义:由一个方法来决定到底要创建哪个类的实例,而这些实例经常拥有相同的接口.其实例 ...
- Net设计模式实例之简单工厂模式(Simple Factory Pattern)
一.简单工厂模式简介(Bref Introduction) 简单工厂模式(Simple Factory Pattern)的优点是,工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类, ...
随机推荐
- linux操作系统cron详解
Linux操作系统定时任务系统 Cron 入门 cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业.由于Cron 是Linux的内置服务,但它不自动起来,可以用以下的方法启动 ...
- app启动其他应用
因开发需要内包一个app,所以要启动一个app,这种操作 如果知道包名和类名 其实很简单 只需要将包名内嵌即可(一般情况 我们都可以解压或者反接拿到) 代码如下: Intent intent = ne ...
- PMD使用手册
文中测试例子均采用JHotDraw7源码,官网关于 JHotDraw的检测结果:http://pmd.sourceforge.net/reports/jhotdraw_JHotDraw.html 下载 ...
- Android 颜色渲染(九) PorterDuff及Xfermode详解
版权声明:本文为博主原创文章,未经博主允许不得转载. Android 颜色渲染(九) PorterDuff及Xfermode详解 之前已经讲过了除ComposeShader之外Shader的全部子类 ...
- app 的内存优化
这篇文章是笔者在开发App过程中发现的一些内存问题, 然后学习了YYKit框架时候也发现了图片的缓存处理 (YYKit 作者联系了我, 说明了YYKit重写imageNamed:的目的不是为了内存管理 ...
- 转战WebApp: 最适合Android开发者的WebApp框架
随着移动端设备越来越多, 微信应用号即将发布, 越来越多的页面需要被移动浏览器承载, HTML5开发大热, 我们需要掌握Web开发的技能来适应时代变化. 合适的WebApp框架 AndroidUI4W ...
- U3D 背景音效和事件触发音效
首先,想要在一个游戏添加背景音乐其实很简单,就是利用一个组件 就能够实现音频的播放,不过要实现通过某一个事件,来进行声音的播放,比如跳跃啊什么的: public AudioClip jumpclips ...
- 表达式:使用API创建表达式树(6)
一.ConstantExpression:表示具有常量值的表达式.因为表达式应用过程中,参数据多是 Expressions 类型,算是对常量值的一种包装吧. ConstantExpression使用比 ...
- AndroidManifest.xml--android系统权限定义
1. 系统编译结束自动生成的java类,描述系统所有定义的权限 out/target/common/R/android/Manifest.java 2. 权限检查方法 frameworks/base/ ...
- (转)asp.net分页存储过程
Asp.Net分页存储过程 SQL分页语句 一.比较万能的分页: sql代码: 1 2 3 select top 每页显示的记录数 * from topic where id not in (sel ...