设计模式:1.1 简单工厂模式
来源:互联网 发布:ubuntu ibus pinyin 编辑:程序博客网 时间:2024/04/27 06:32
简单工厂模式:在工厂类中做判断,从而创造相应的产品。增加新的产品时,就需要修改工厂类。
实例:一家生成处理器的厂家,一个工厂,能够产生两种型号的处理器核。客户需要什么样的处理器核,显示告诉生产工厂。
简单工厂缺点:增加新的产品类型,需要修改工厂类
main.cpp内容如下
#include <iostream>#include <stdlib.h>#include "SingleCore.h"#include "Factory.h"#include <memory>using namespace std;void process(){Factory factory;std::shared_ptr<SingleCore> ptrCore = factory.instance(COREA);if(ptrCore){ptrCore->show();}}int main(int argc,char* argv[]){process();system("pause");return 0;}
Factory.h内容如下
#ifndef FACTORY_H#define FACTORY_H#include <memory>#include "SingleCore.h"class Factory{public:Factory(void);~Factory(void);std::shared_ptr<SingleCore> instance(enum PRODUCT_TYPE type);};#endif
Factory.cpp内容如下
#include "Factory.h"#include "SingleCoreA.h"#include "SingleCoreB.h"Factory::Factory(void){}Factory::~Factory(void){}//简单工厂模式缺点:增加新类型需要修改工厂类std::shared_ptr<SingleCore> Factory::instance(enum PRODUCT_TYPE type){//工厂内部判断if(type == COREA){std::shared_ptr<SingleCore> ptrA(new SingleCoreA);return ptrA;}else if(type == COREB){std::shared_ptr<SingleCore> ptrB(new SingleCoreB);return ptrB;}else{return NULL;}}
Sincore.h内容
#ifndef SINGLECORE_H#define SINGLECORE_Henum PRODUCT_TYPE{COREA,COREB};//父类class SingleCore{public:SingleCore(void);virtual ~SingleCore(void);virtual void show()=0;};#endif
Sincore.cpp内容
#include "SingleCore.h"SingleCore::SingleCore(void){}SingleCore::~SingleCore(void){}/*void SingleCore::show(){}*/
SingleCoreA.h
#ifndef SINGLECOREA_H#define SINGLECOREA_H#include "singlecore.h"class SingleCoreA :public SingleCore{public:SingleCoreA(void);~SingleCoreA(void);void show();};#endif
SingleCoreA.cpp
#include "SingleCoreA.h"#include <iostream>using namespace std;SingleCoreA::SingleCoreA(void){}SingleCoreA::~SingleCoreA(void){}void SingleCoreA::show(){cout << "单核处理器A" << endl;}
SingleCoreB.h
#ifndef SINGLECOREB_H#define SINGLECOREB_H#include "singlecore.h"class SingleCoreB :public SingleCore{public:SingleCoreB(void);~SingleCoreB(void);void show();};#endif
SingleCoreB.cpp
#include "SingleCoreB.h"#include <iostream>using namespace std;SingleCoreB::SingleCoreB(void){}SingleCoreB::~SingleCoreB(void){}void SingleCoreB::show(){cout << "单核处理器B" << endl;}
0 0
- 设计模式:1.1 简单工厂模式
- 简单工厂设计模式
- 设计模式-----简单工厂
- 简单工厂设计模式
- 设计模式:简单工厂
- 设计模式 - 简单工厂
- 设计模式 简单工厂
- 【设计模式】【简单工厂】
- 简单工厂设计模式
- 简单工厂设计模式
- 设计模式--简单工厂
- 简单工厂设计模式
- 简单工厂设计模式
- 设计模式------------简单工厂
- 设计模式--简单工厂
- 简单工厂设计模式
- 设计模式---------简单工厂
- 设计模式--简单工厂
- ICSharpCode 生成zip文件苹果系统打不开
- RTF报表开发记录
- vivado中创建一个zynq嵌入式系统
- get和post提交数据的区别
- hdoj 4749 kmp
- 设计模式:1.1 简单工厂模式
- I学霸官方免费教程十一:Java基础之访问权限
- Android 为PopupWindow设置动画效果
- 【译】使用Espresso进行UI测试
- Matlab中数据处理和多项式插值与曲线拟合
- Snake
- 保存时,使用JS进行非空判断时,如何获取单选按钮,选定的值?
- YouTube Data API(ruby)
- Python安装cairo、gtk等问题