C++ 设计模式之工厂方法模式

C++ 设计模式之工厂方法模式

简介

1、工厂方法模式是一种创建型设计模式,它提供了一种在不指定具体类的情况下创建对象的方法。工厂方法模式定义了一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。

2、工厂方法模式 (Factory Method)应用场景包括但不限于:
2.1、不知道用户需要创建的具体对象 :当你只知道需要创建的对象应该符合某个接口或基类,而不知道具体实现时,可以应用工厂方法模式。
2.2、需要对创建过程进行解耦 :当需要把对象的创建与使用的过程分离,以便系统更容易扩展,对创建过程进行更细粒度的控制时,工厂方法模式很有用。
2.3、希望用户扩展部分子系统时 :当设计一个库或框架,你希望用户能扩展其某些部分(例如添加新的产品),但又不希望他们修改现有的代码时,工厂方法模式能提供很好的解决方案。
2.4、类的实例化逻辑比较复杂 :如果某个对象的创建依赖于多个动态参数或配置,那么将这个复杂的逻辑从使用环境中抽离出来,放在工厂中,可以使代码更清晰、更易于维护。
2.5、提供一个库或工具时 :当你提供的是一个要被其他系统所集成的库或工具时,可以使用工厂方法让库用户能够在不改变库代码的情况下引入自定义行为。

3、工厂方法模式的构成
定义一个用于创建对象的接口,让子类决定实例化哪一个类。

3.1、抽象产品接口

class ILogger
{
   
public:
	virtual ~ILogger() {
   };
	virtual void Log(const std::string& strMessage) = 0;
};

3.2、具体产品

class FileLogger : public ILogger
{
   
public:
	void Log(const std::string& strMessage);
};

3.3、创建者工厂

class LoggerFactory
{
   
public:
	virtual ~LoggerFactory() {
   };
	virtual ILogger* CreateLogger() = 0;
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值