设计模式之工厂模式

工厂模式

  1. 工厂模式(Factory Pattern):提供一个统一的接口来创建对象,隐藏对象的具体实现细节。
    它是一种创建型设计模式,用于创建对象的过程不在客户端代码中直接实例化,而是通过一个工厂类来完成。工厂模式提供了一种创建对象的接口,让子类决定实例化哪个类。

  2. 工厂模式通常涉及以下几个角色:

    • 抽象产品(Abstract Product):定义了产品的通用接口。可以是一个抽象类或接口。
    • 具体产品(Concrete Product):实现抽象产品接口,是工厂模式真正创建的对象。
    • 抽象工厂(Abstract Factory):声明了工厂方法,用于创建抽象产品的对象。
    • 具体工厂(Concrete Factory):实现抽象工厂接口,并负责实例化具体产品。

下面是一个简单的示例,演示了工厂模式的基本结构:
下面展示一些 内联代码片

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

// 具体产品
class ConcreteProduct : public Product {
public:
    void use() override {
        // 具体产品的使用逻辑
    }
};

// 抽象工厂
class Factory {
public:
    virtual Product* createProduct() = 0;
};

// 具体工厂
class ConcreteFactory : public Factory {
public:
    Product* createProduct() override {
        return new ConcreteProduct();
    }
};

// 客户端代码
int main() {
    Factory* factory = new ConcreteFactory();
    Product* product = factory->createProduct();
    product->use();

    delete product;
    delete factory;

    return 0;
}

在上述示例中,抽象产品 Product 定义了产品的通用接口,具体产品 ConcreteProduct 实现了具体产品的功能。抽象工厂 Factory 定义了创建产品的接口,具体工厂 ConcreteFactory 实现了具体产品的创建。客户端通过工厂来获取产品对象,并使用该产品。

工厂模式具有以下优点:

将客户端代码与具体产品的创建过程解耦,使客户端代码更加灵活可扩展。
符合开闭原则,当需要添加新的产品时,只需要添加对应的具体产品和具体工厂,不需要修改现有代码。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值