工厂模式

工厂模式

定位

创建型设计模式
资源管理型模式

核心原理

将对象的创建从业务代码中抽离出来,统一委托在工厂类内部。
配合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;
}
posted @ 2026-03-22 17:29  SINGLERS  阅读(2)  评论(0)    收藏  举报