工厂模式
工厂模式
定位
创建型设计模式
资源管理型模式
核心原理
将对象的创建从业务代码中抽离出来,统一委托在工厂类内部。
配合auto自动类型推导,可以进一步简化业务代码。
声明
#ifndef FACTORY_H
#define FACTORY_H
class Object1 {
public:
void business(); // 业务逻辑
};
class Object2 {
public:
void business(); // 业务逻辑
};
class Object3 {
public:
void business(); // 业务逻辑
};
class Factory {
public:
Object1* getObject1Instance(); // 获取对象1实例
Object2* getObject2Instance(); // 获取对象2实例
Object3* getObject3Instance(); // 获取对象3实例
};
#endif
实现
// 业务逻辑
void Object1::business() {
std::cout << 1 << std::endl;
}
// 业务逻辑
void Object2::business() {
std::cout << 2 << std::endl;
}
// 业务逻辑
void Object3::business() {
std::cout << 3 << std::endl;
}
// 获取对象1实例
Object1 *Factory::getObject1Instance() {
return new Object1();
}
// 获取对象2实例
Object2 *Factory::getObject2Instance() {
return new Object2();
}
// 获取对象3实例
Object3 *Factory::getObject3Instance(){
return new Object3();
}
使用示例
#include "Factory.h"
int main() {
// 创建工厂实例
Factory * factory = new Factory();
// 显式写出数据类型
Object1* obj1 = factory -> getObject1Instance();
Object2* obj2 = factory -> getObject2Instance();
Object3* obj3 = factory -> getObject3Instance();
// 配合auto自动推导数据类型
auto obj4 = factory -> getObject1Instance();
auto obj5 = factory -> getObject2Instance();
auto obj6 = factory -> getObject3Instance();
obj1->business();
obj2->business();
obj3->business();
obj4->business();
obj5->business();
obj6->business();
return 0;
}

浙公网安备 33010602011771号