首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

工廠方法模式在 C++ 中的實現與應用

     編輯:C++ 入門

工廠方法模式簡介

工廠方法模式是一種創建型設計模式,它定義一個用於創建對象的接口,讓子類決定實例化哪個類。工廠方法使一個類的實例化延遲到其子類,從而實現了解耦合與擴展性的平衡。

適用場景

  • 當一個類不知道它必須創建的對象的類別時。
  • 當一個類希望由其子類來指定它所創建的對象時。
  • 當類將創建對象的職責委托給多個幫助子類中的一個,並且你希望將哪一個幫助子類是代理者這一信息局部化時。

核心優勢

  1. 良好的封裝性:客戶端無需知道具體產品類的實例化細節。
  2. 優異的擴展性:新增產品類只需增加對應的工廠子類,符合開閉原則。
  3. 屏蔽產品類:用戶只需關注工廠接口,不依賴具體實現。
  4. 實現解耦:符合迪米特法則(最少知識原則),降低模塊間耦合度。

結構示意

雖然原文未給出具體類圖,但典型結構包含:

  • 抽象工廠:聲明工廠方法,返回抽象產品。
  • 具體工廠:實現工廠方法,返回具體產品實例。
  • 抽象產品:定義產品接口。
  • 具體產品:實現產品接口。

C++ 代碼示例

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

// 具體產品 A
class ConcreteProductA : public Product {
public:
    void use() override { std::cout << "使用產品 A\n"; }
};

// 具體產品 B
class ConcreteProductB : public Product {
public:
    void use() override { std::cout << "使用產品 B\n"; }
};

// 抽象工廠
class Factory {
public:
    virtual ~Factory() = default;
    virtual std::unique_ptr createProduct() = 0;
};

// 具體工廠 A
class ConcreteFactoryA : public Factory {
public:
    std::unique_ptr createProduct() override {
        return std::make_unique();
    }
};

// 具體工廠 B
class ConcreteFactoryB : public Factory {
public:
    std::unique_ptr createProduct() override {
        return std::make_unique();
    }
};

// 客戶端代碼
void clientCode(Factory& factory) {
    auto product = factory.createProduct();
    product->use();
}

通過工廠方法模式,我們將對象創建的邏輯封裝在具體工廠中,客戶端只需依賴抽象工廠接口,極大地提高了代碼的可維護性與擴展性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved