C++设计模式:简单工厂的定义与基础使用

定义: 提供一个创建对象实例的功能,不关心其具体的实现。被创建的类可以是接口(抽象类),也可以是具体的类。

 类图:

 实现:

//Api.h

class Api {
protected:
	Api(){}	//屏蔽构造函数,体现接口

public:
	virtual void test(std::string s) = 0;	//纯虚函数
};

class ImpleOne : public Api {
public:
	void test(std::string s) {
		std::cout << "ImpleOne: " << s;
	}
};

class ImpleTwo : public Api {
public:
	void test(std::string s) {
		std::cout << "ImpleTwo: " << s;
	}
};

class Factory {//简单工厂
public:
	static Api* createApi(int type) {
		Api* p = nullptr;

		if (type == 1)
			p = new ImpleOne();

		if (type == 2)
			p = new ImpleTwo();

		return p;
	}
};
//main.cpp

#include <iostream>
#include <string>
#include "Api.h"

int main(void) {//Client
	Api* p = Factory::createApi(1);
	p->test("简单工厂");

	Api* p2 = Factory::createApi(2);
	p2->test("简单工厂");

	return 0;
}

 Factory类使得客户端与ImpleOne和ImpleTwo类解耦合。客户端只专注于创建而不关心其类实现的细节。

C++设计 简单工厂实用工程技术-动态创建对象与配置化并发icon-default.png?t=M0H8https://blog.csdn.net/qq_58665528/article/details/122625792

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值