C++设计模式-工厂模式(Factory Method)

目录

[C++设计模式-工厂模式(Factory Method)](#C++设计模式-工厂模式(Factory Method))

一、意图

二、适用性

三、结构

四、参与者

五、代码


C++设计模式-工厂模式(Factory Method)

一、意图

定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。

二、适用性

  • 当一个类不知道它所必须创建的对象的类的时候。
  • 当一个类希望由它的子类来指定它所创建的对象的时候。
  • 当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。

三、结构

四、参与者

  • Product

定义工厂方法所创建的对象的接口。

  • ConcreteProduct

实现Product接口。

  • Creator

声明工厂发法,该方法返回一个Product类型的对象。Creator也可以定义一个工厂方法的缺省实现,它返回一个缺省的ConcreteProduct对象。

可以调用工厂方法以创建一个Product对象。

  • ConcreteCreator

重定义工厂方法以返回一个ConcreteProduct实例。

五、代码

cpp 复制代码
#include<iostream>
using namespace std;

class Product {
public:
	virtual void ShowInformation() = 0;
};

class Product_A : public Product {
public:
	void ShowInformation() {
		cout << "Product_A Information" << endl;
	}
};

class Product_B : public Product {
public:
	void ShowInformation() {
		cout << "Product_B Information" << endl;
	}
};

class Factory {
public:
	virtual Product* CreateProduct() = 0;
};

class Factory_A : public Factory {
public:
	Product* CreateProduct() {
		return new Product_A();
	}
};

class Factory_B : public Factory {
public:
	Product* CreateProduct() {
		return new Product_B();
	}
};

int main() {

	Factory* FactoryA = new Factory_A();
	Product* ProductA = FactoryA->CreateProduct();
	ProductA->ShowInformation();

	Factory* FactoryB = new Factory_B();
	Product* ProductB = FactoryB->CreateProduct();
	ProductB->ShowInformation();

	return 0;
}
相关推荐
苦学编程的谢8 分钟前
MyBatis_3
java·开发语言·后端·mybatis
go54631584651 小时前
Python点阵字生成与优化:从基础实现到高级渲染技术
开发语言·人工智能·python·深度学习·分类·数据挖掘
猫头虎1 小时前
2025年02月11日 Go生态洞察:Go 1.24 发布亮点全面剖析
开发语言·后端·python·golang·go·beego·go1.19
程序员编程指南1 小时前
Qt 网络编程进阶:RESTful API 调用
c语言·网络·c++·qt·restful
仰望天空—永强1 小时前
PS 2025【七月最新v26.5】PS铺软件安装|最新版|附带安装文件|详细安装说明|附PS插件
开发语言·图像处理·python·图形渲染·photoshop
寒士obj1 小时前
JVM 内存结构
java·开发语言·jvm
MediaTea1 小时前
Python 库手册:xmlrpc.client 与 xmlrpc.server 模块
开发语言·python
悦悦子a啊1 小时前
Python之--字典
开发语言·python·学习
程序员编程指南1 小时前
Qt XML 与 JSON 数据处理方法
xml·c语言·c++·qt·json
float_六七2 小时前
JavaScript:现代Web开发的核心动力
开发语言·前端·javascript