设计模式之创建类型
来源:互联网 发布:java helloword 编辑:程序博客网 时间:2024/06/05 02:29
创建类型包括 工厂模式、抽象工厂、创建者模式、单例模式和原型模式。
工厂模式UML图:
代码实现:
Factory.h
class ProductBase;class FactoryBase{public:FactoryBase();~FactoryBase();virtual ProductBase * ConcreateProduct() = 0;};class FactoryA : public FactoryBase{public:FactoryA();~FactoryA();virtual ProductBase * ConcreateProduct() override;};class FactoryB : public FactoryBase{public:FactoryB();~FactoryB();virtual ProductBase * ConcreateProduct() override;};
Factory.cpp
FactoryBase::FactoryBase(){}FactoryBase::~FactoryBase(){}FactoryA::FactoryA(){}FactoryA::~FactoryA(){}ProductBase * FactoryA::ConcreateProduct(){ProductBase * Product = new ProductA();return Product;}FactoryB::FactoryB(){}FactoryB::~FactoryB(){}ProductBase * FactoryB::ConcreateProduct(){ProductBase * Product = new ProductB();return Product;}
class ProductBase{public:ProductBase();~ProductBase();public:virtual void Execute() = 0;};class ProductA : public ProductBase{public:ProductA();~ProductA();public:virtual void Execute() override;};class ProductB : public ProductBase{public:ProductB();~ProductB();public:virtual void Execute() override;};
Product.cpp
ProductBase::ProductBase(){cout << "Product Base Construct" << endl;}ProductBase::~ProductBase(){}ProductA::ProductA(){cout << "Product A Construct" << endl;}ProductA::~ProductA(){}void ProductA::Execute(){cout << "Product A Execute" << endl;}ProductB::ProductB(){cout << "Product B Construct" << endl;}ProductB::~ProductB(){}void ProductB::Execute(){cout << "Product B Execute" << endl;}
对应的客户:
int main(){FactoryBase * FactoryAInstance = new FactoryA();ProductBase * ProductAInstance = FactoryAInstance->ConcreateProduct();ProductAInstance->Execute();delete ProductAInstance;delete FactoryAInstance;FactoryBase * FactoryBInstance = new FactoryB();ProductBase * ProductBInstance = FactoryBInstance->ConcreateProduct();ProductBInstance->Execute();delete ProductBInstance;delete FactoryBInstance;system("pause"); return 0;}
抽象工厂UML图:
代码实现:
创建者模式UML图:
代码实现:
创建者模式UML图:
代码实现:
单例模式UML图:
代码实现:
原型模式UML图:
代码实现:
总结说明:
0 0
- 设计模式之创建类型
- 设计模式---创建类型---生成器
- 设计模式---创建类型---原型
- 设计模式之创建模式
- 设计模式之创建模式
- 设计模式之创建模式
- 设计模式之创建模式
- 设计模式之创建型设计模式
- 设计模式---创建类型---抽象工厂
- 设计模式---创建类型---工厂方法
- 设计模式---创建类型---单件
- 设计模式 创建模式之工厂模式
- 设计模式 创建模式之建造模式
- 设计模式之创建型
- 设计模式之-创建型
- 设计模式之创建新模式
- 设计模式之创建型
- 设计模式之创建型
- 多种最值算法,适时选择
- 函数program
- C 语言数据类型意义解析
- Uva 1586-Molar mass(水题)
- 利用神经网络进行艺术风格迁移
- 设计模式之创建类型
- 好用的在线 java 编译网站(亲测)
- java多线程学习10-使用ReentrantReadWriteLock的一个例子
- day07_servlet
- Gradle for Android 第五篇( 多模块构建 )
- 优化 | InnoDB表一定要用自增列做主键
- K
- update(更新) 和 upgrade(升级)
- 多进程和多线程的练习笔记