Factory 模式

Factory模式是一种创建型设计模式,它可以根据不同的参数或条件,创建并返回不同类型的对象。Factory模式的优点是可以将对象的创建过程封装起来,避免直接使用new操作符,提高了代码的可维护性和可扩展性。Factory模式的缺点是可能会导致类的数量增加,增加了系统的复杂度。

Factory模式适用于以下场景:

  • 当需要根据不同的输入或配置,创建不同类型或属性的对象时,可以使用Factory模式。
  • 当需要将对象的创建过程与对象的使用过程分离时,可以使用Factory模式。
  • 当需要在运行时动态地创建对象时,可以使用Factory模式。

Factory模式有以下几种常见的变体:

  • 简单工厂(Simple Factory):一个工厂类根据传入的参数,决定创建哪一种产品类的实例。
  • 工厂方法(Factory Method):定义一个抽象的工厂接口,让子类实现具体的工厂方法,每个子类负责创建一种产品类的实例。
  • 抽象工厂(Abstract Factory):定义一个抽象的工厂接口,让子类实现具体的工厂方法,每个子类负责创建一系列相关或相互依赖的产品类的实例。

// 工厂模式示例
#include <iostream>
using namespace std;

// 抽象产品类
class Product {
public:
    virtual void use() = 0;
    virtual ~Product() {}
};

// 具体产品类A
class ProductA : public Product {
public:
    void use() {
        cout << "ProductA in use." << endl;
    }
};

// 具体产品类B
class ProductB : public Product {
public:
    void use() {
        cout << "ProductB in use." << endl;
    }
};

// 工厂类
class Factory {
public:
    // 工厂方法,返回抽象产品类指针
    virtual Product* createProduct() = 0;
    virtual ~Factory() {}
};

// 具体工厂类A
class FactoryA : public Factory {
public:
    // 实现工厂方法,返回具体产品类A指针
    Product* createProduct() {
        return new ProductA();
    }
};

// 具体工厂类B
class FactoryB : public Factory {
public:
    // 实现工厂方法,返回具体产品类B指针
    Product* createProduct() {
        return new ProductB();
    }
};

int main() {
    // 创建具体工厂类A对象
    Factory* factoryA = new FactoryA();
    // 通过工厂A创建具体产品类A对象
    Product* productA = factoryA->createProduct();
    // 使用产品A
    productA->use();
    delete productA;
    delete factoryA;

    // 创建具体工厂类B对象
    Factory* factoryB = new FactoryB();
    // 通过工厂B创建具体产品类B对象
    Product* productB = factoryB->createProduct();
    // 使用产品B
    productB->use();
    delete productB;
    delete factoryB;

    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值