设计模式工厂方法(FactoryMethod)
来源:互联网 发布:鸿运抽奖软件注册码 编辑:程序博客网 时间:2024/05/16 06:06
工厂方法:
优点:
基本与简单工厂一致,但是遵循封闭-开放原则,灵活性更强
缺点:
与简单工厂差不多
代码实现:
FactoryMethod.h
#ifndef FACTORYMETHOD_H#define FACTORYMETHOD_Hnamespace FactoryMethod {/*Product*/class AbstrcutBase{public: AbstrcutBase(){} ~AbstrcutBase(){} virtual void show();};class ProductA : public AbstrcutBase{public: ProductA(){} ~ProductA(){} void show();};class ProductB : public AbstrcutBase{public: ProductB(){} ~ProductB(){} void show();};/*Factory*/class FactoryBase{public: FactoryBase(){} ~FactoryBase(){} virtual AbstrcutBase *createFactory();};class FactoryA : public FactoryBase{public: FactoryA(){} ~FactoryA(){} AbstrcutBase *createFactory();};class FactoryB : public FactoryBase{public: FactoryB(){} ~FactoryB(){} AbstrcutBase *createFactory();};}#endif // FACTORYMETHOD_H
#include "factorymethod.h"#include <iostream>void FactoryMethod::AbstrcutBase::show(){ std::cout << "this is AbstructBase" <<std::endl;}void FactoryMethod::ProductA::show(){ std::cout << "this is ProductA" <<std::endl;}void FactoryMethod::ProductB::show(){ std::cout << "this is ProductB" <<std::endl;}FactoryMethod::AbstrcutBase *FactoryMethod::FactoryBase::createFactory(){ std::cout << "this is AbstructFactoryBase" <<std::endl; return new AbstrcutBase;}FactoryMethod::AbstrcutBase *FactoryMethod::FactoryA::createFactory(){ std::cout << "this is FactoryA" <<std::endl; return new ProductA;}FactoryMethod::AbstrcutBase *FactoryMethod::FactoryB::createFactory(){ std::cout << "this is FactoryB" <<std::endl; return new ProductB;}
main.cpp
#include <iostream>#include "factorymethod.h"int main(){ FactoryMethod::FactoryBase *factory = new FactoryMethod::FactoryBase; factory->createFactory()->show(); factory = new FactoryMethod::FactoryA; factory->createFactory()->show(); factory = new FactoryMethod::FactoryB; factory->createFactory()->show(); return 0;}<strong></strong>
0 0
- 设计模式--工厂方法(FactoryMethod)
- 设计模式工厂方法(FactoryMethod)
- 设计模式之--工厂方法模式(FactoryMethod )
- 设计模式 -- 工厂方法模式 FactoryMethod
- 设计模式之工厂方法模式(FactoryMethod)
- 设计模式-工厂方法模式-factorymethod-python
- 设计模式之FactoryMethod(工厂方法)
- 设计模式(二) 工厂方法(FactoryMethod)
- 23设计模式之工厂方法(FactoryMethod)
- 23设计模式之工厂方法(FactoryMethod)
- 设计模式——工厂方法 FactoryMethod
- 【设计模式】——工厂方法FactoryMethod
- 23种设计模式-FactoryMethod工厂方法
- FactoryMethod 工厂方法模式
- 工厂方法模式(FactoryMethod)
- FactoryMethod 工厂方法模式
- factorymethod 工厂方法模式
- 23种设计模式-FactoryMethod(工厂方法)设计模式
- iOS开发系列--通知与消息机制
- 我使用的Xcode 常用插件
- leetcode.274. H-Index
- React中es6语法解析
- C++第四次实验——派生和继承1
- 设计模式工厂方法(FactoryMethod)
- More Effective C++----(17)考虑使用lazy evaluation(懒惰计算法)
- 121. Best Time to Buy and Sell Stock
- PHP调用2个一排数据
- ios中获得UUID的方法,ios怎么获得uuid
- 感觉略炫酷的将正在运行的程序切换到后台运行
- Java泛型
- 实例变量 定义在 @interface 和 @implementation 有何区别?
- 剑指offer:数据流中的中位数