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;
}
相关推荐
独好紫罗兰9 小时前
对python的再认识-基于数据结构进行-a005-元组-CRUD
开发语言·数据结构·python
LYOBOYI1239 小时前
qtcpSocket详解
c++·qt
REDcker9 小时前
gRPC完整文档
服务器·网络·c++·网络协议·grpc
chilavert3189 小时前
技术演进中的开发沉思-356:重排序(中)
java·开发语言
devmoon9 小时前
为 Pallet 搭建最小化 Mock Runtime 并编写单元测试环境
开发语言·单元测试·区块链·智能合约·polkadot
Coder_Boy_9 小时前
Java开发者破局指南:跳出内卷,借AI赋能,搭建系统化知识体系
java·开发语言·人工智能·spring boot·后端·spring
Mr_Xuhhh9 小时前
介绍一下ref
开发语言·c++·算法
王老师青少年编程9 小时前
2024年信奥赛C++提高组csp-s初赛真题及答案解析(完善程序第2题)
c++·题解·真题·初赛·信奥赛·csp-s·提高组
nbsaas-boot9 小时前
软件开发最核心的理念:接口化与组件化
开发语言
Trouvaille ~10 小时前
【Linux】进程间关系与守护进程详解:从进程组到作业控制到守护进程实现
linux·c++·操作系统·守护进程·作业·会话·进程组