c++ 设计模式23讲(番外篇)之简单工厂模式

简单工厂模式

定义:

定义一个工厂类根据不同参数创建其他类的实例

优点:

(1)将实例创建与使用分离

(2)可通过配置增加新的产品类,灵活扩展

(3)客户端可不关心产品类类名,只需知道参数定义和生成实例的对应关系

缺点:

(1)工厂类集合了所有创建逻辑,指责过大,一旦崩溃影响很大

(2)新增加参评类需要同步修改工厂类

使用范围:

众多相似关系的产品独立创建各自实例情况,如调用各种控件等

结构:

实现简单工厂创建a和b2个产品

实现:

namespace creational_pattern
{
	class product{};
	class a_product : public  product {};
	class b_product : public  product {};

	class simple_factory
	{
	public:
		static std::shared_ptr<product> get_product(int type = 0)
		{
			if (1 == type)
				return std::shared_ptr<product>{new a_product};
			return std::shared_ptr<product>{new b_product};
		}
	};
}

测试:

基于GoogleTest 的单元测试框架;框架可参考如下网址:

https://www.cnblogs.com/jycboy/p/gtest_catalog.html

using namespace creational_pattern;

TEST(test_simple_factory_get_product, get_a_product)
{
	std::cout << typeid(simple_factory::get_product(1)).name() << std::endl;
}

总结

(1)工厂类负责根据参数创建不同类实例

(2)工厂类创建实例方法最好设置为静态

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值