国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C++設(shè)計(jì)模式(工廠模式)

這篇具有很好參考價(jià)值的文章主要介紹了C++設(shè)計(jì)模式(工廠模式)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。


前言

本篇文章正式帶大家來學(xué)習(xí)C++中的設(shè)計(jì)模式,這篇文章主要帶大家學(xué)習(xí)工廠模式。

一、什么是工廠模式

工廠模式(Factory Pattern)是一種創(chuàng)建型設(shè)計(jì)模式,它提供了一種創(chuàng)建對象的接口,但將具體對象的實(shí)例化延遲到子類或具體工廠類中。工廠模式通過解耦客戶端代碼和創(chuàng)建具體對象的過程,使客戶端代碼不需要直接依賴于具體對象的創(chuàng)建方式,而是通過工廠來創(chuàng)建對象,從而提高代碼的靈活性和可維護(hù)性。

在C++中,工廠模式可以有多種實(shí)現(xiàn)方式,包括簡單工廠模式、工廠方法模式和抽象工廠模式。

UML結(jié)構(gòu)圖:

C++設(shè)計(jì)模式(工廠模式),C++設(shè)計(jì)模式,c++,設(shè)計(jì)模式,開發(fā)語言,原力計(jì)劃

二、簡單工廠模式

簡單工廠模式通過一個(gè)工廠類來封裝對象的創(chuàng)建過程??蛻舳烁鶕?jù)不同的參數(shù)傳遞給工廠類,工廠類根據(jù)參數(shù)的不同來創(chuàng)建不同的具體對象。簡單工廠模式的一大優(yōu)勢是將對象的創(chuàng)建邏輯集中到一個(gè)工廠類中,客戶端代碼只需要與工廠類進(jìn)行交互,而不需要直接與具體對象進(jìn)行交互。

示例代碼:

#include <iostream>

using namespace std;

// 抽象產(chǎn)品接口
class Product
{
public:
	virtual void use() = 0;
};

// 具體產(chǎn)品類A
class ConcreteProductA : public Product 
{
public:
    void use() 
    {
        cout << "Using ConcreteProductA\n";
    }
};

// 具體產(chǎn)品類B
class ConcreteProductB : public Product
{
public:
    void use() 
    {
        cout << "Using ConcreteProductB\n";
    }
};

//工廠類
class Factory
{
public:
    static Product* CreateProduct(int type)
    {
        if (type == 1)
        {
            return new ConcreteProductA();
        }
        else if (type == 2)
        {
            return new ConcreteProductB();
        }
        else
        {
            return NULL;
        }
    }
};

int main(void)
{
    Product* productA = Factory::CreateProduct(1);
    productA->use();

    Product* productB = Factory::CreateProduct(2);
    productB->use();

    delete productA;
    delete productB;

	return 0;
}

三、簡單工廠模式優(yōu)點(diǎn)和缺點(diǎn)

優(yōu)點(diǎn):

將對象的創(chuàng)建邏輯集中到了一個(gè)工廠類中,客戶端只需要與工廠類進(jìn)行交互,而無需關(guān)注具體對象的創(chuàng)建過程,降低了客戶端代碼的復(fù)雜性。

客戶端代碼與具體對象解耦,可以通過工廠類創(chuàng)建不同的對象,而無需修改客戶端代碼,提高了代碼的靈活性和可擴(kuò)展性。

客戶端代碼只需要知道抽象產(chǎn)品接口,而無需了解具體產(chǎn)品的細(xì)節(jié),實(shí)現(xiàn)了依賴倒置原則。
可以隱藏具體產(chǎn)品的實(shí)現(xiàn)細(xì)節(jié),提高了代碼的安全性。

缺點(diǎn):

違反了開閉原則,對于每個(gè)新增的具體產(chǎn)品,都需要修改工廠類的創(chuàng)建邏輯,可能導(dǎo)致工廠類的代碼過于臃腫。

工廠類集中了所有的對象創(chuàng)建邏輯,當(dāng)有多個(gè)具體產(chǎn)品時(shí),工廠類的代碼會變得復(fù)雜,不易于維護(hù)和擴(kuò)展。
簡單工廠模式中的工廠類負(fù)責(zé)創(chuàng)建所有具體產(chǎn)品,當(dāng)新增具體產(chǎn)品時(shí),工廠類會變得臃腫,不符合單一職責(zé)原則。

四、簡單工廠適用場景

1.對象的創(chuàng)建邏輯相對簡單:當(dāng)需要?jiǎng)?chuàng)建的對象邏輯比較簡單,不涉及復(fù)雜的條件判斷或算法時(shí),可以使用簡單工廠模式。

2.需要對客戶端代碼隱藏具體對象的創(chuàng)建細(xì)節(jié):通過簡單工廠模式,客戶端只需要與工廠類進(jìn)行交互,而不需要直接與具體對象進(jìn)行交互,可以實(shí)現(xiàn)對具體對象的創(chuàng)建細(xì)節(jié)進(jìn)行封裝和隱藏。

3.需要根據(jù)不同的參數(shù)創(chuàng)建不同的對象:當(dāng)需要根據(jù)不同的參數(shù)或配置來選擇創(chuàng)建不同的具體對象時(shí),可以使用簡單工廠模式??蛻舳酥恍枰o定相應(yīng)的參數(shù),工廠類根據(jù)參數(shù)的不同來創(chuàng)建對應(yīng)的對象。

4.對象的數(shù)量相對穩(wěn)定:如果系統(tǒng)中的對象數(shù)量固定且不經(jīng)常變化,不需要頻繁地添加新的具體對象,簡單工廠模式可以簡化對象的創(chuàng)建和管理。

五、簡單工廠類的使用

在Qt中,使用工廠模式可以實(shí)現(xiàn)創(chuàng)建和管理各種對象的過程,尤其在UI編程中非常常見。以下是一個(gè)簡單的示例,展示了如何在Qt中使用工廠模式來創(chuàng)建不同類型的窗口:

首先,我們需要定義一個(gè)抽象窗口類(AbstractWindow)作為工廠的產(chǎn)品接口,用于表示不同類型的窗口對象。

class AbstractWindow : public QWidget
{
public:
    virtual void display() = 0;
};

接下來,我們可以創(chuàng)建具體的窗口類(例如:MainWindow、DialogWindow、PopupWindow)繼承自抽象窗口類,并實(shí)現(xiàn)其相應(yīng)的方法。

class MainWindow : public AbstractWindow
{
public:
    void display() override
    {
        // 實(shí)現(xiàn)MainWindow的顯示邏輯
    }
};

class DialogWindow : public AbstractWindow
{
public:
    void display() override
    {
        // 實(shí)現(xiàn)DialogWindow的顯示邏輯
    }
};

class PopupWindow : public AbstractWindow
{
public:
    void display() override
    {
        // 實(shí)現(xiàn)PopupWindow的顯示邏輯
    }
};

接下來,我們需要?jiǎng)?chuàng)建一個(gè)窗口工廠類(WindowFactory),用于根據(jù)不同的參數(shù)創(chuàng)建相應(yīng)類型的窗口對象。

class WindowFactory
{
public:
    static AbstractWindow* createWindow(const QString& windowType)
    {
        if (windowType == "MainWindow")
        {
            return new MainWindow();
        }
        else if (windowType == "DialogWindow")
        {
            return new DialogWindow();
        }
        else if (windowType == "PopupWindow")
        {
            return new PopupWindow();
        }

        return nullptr;
    }
};

在客戶端代碼中,我們可以使用窗口工廠類來創(chuàng)建具體的窗口對象。

QString windowType = "MainWindow"; // 可以根據(jù)需求指定不同的窗口類型

AbstractWindow* window = WindowFactory::createWindow(windowType);
if (window)
{
    window->display();
    delete window;
}

通過上述代碼,我們可以根據(jù)不同的窗口類型使用工廠模式創(chuàng)建相應(yīng)的窗口對象,并執(zhí)行其特定的顯示邏輯。

在這個(gè)例子中,抽象窗口類充當(dāng)了工廠的產(chǎn)品接口,具體窗口類是工廠所創(chuàng)建的產(chǎn)品,而窗口工廠類則是具體實(shí)現(xiàn)工廠模式的類。通過使用工廠模式,我們能夠有效地解耦了窗口對象的創(chuàng)建和使用過程,并使得程序更具靈活性和可擴(kuò)展性。

總結(jié)

本篇文章就講解到這里。文章來源地址http://www.zghlxwxcb.cn/news/detail-671611.html

到了這里,關(guān)于C++設(shè)計(jì)模式(工廠模式)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【設(shè)計(jì)模式】使用 go 語言實(shí)現(xiàn)簡單工廠模式

    最近在看《大話設(shè)計(jì)模式》,這本書通過對話形式講解設(shè)計(jì)模式的使用場景,有興趣的可以去看一下。 第一篇講的是 簡單工廠模式 ,要求輸入兩個(gè)數(shù)和運(yùn)算符號,得到運(yùn)行結(jié)果。 這個(gè)需求不難,難就難在類要怎么設(shè)計(jì),才能達(dá)到可復(fù)用、維護(hù)性強(qiáng)、可拓展和靈活性高。 運(yùn)

    2024年02月05日
    瀏覽(31)
  • C++設(shè)計(jì)模式創(chuàng)建型之工廠模式整理

    一、工廠模式分類 ????????工廠模式屬于創(chuàng)建型模式,一般可以細(xì)分為簡單工廠模式、工廠模式和抽象工廠模式。每種都有不同的特色和應(yīng)用場景。 二、工廠模式詳情 1、簡單工廠模式 1)概述 ? ? ? ? 簡單工廠模式相對來說,在四人組寫的《設(shè)計(jì)模式------可復(fù)用面向?qū)?/p>

    2024年02月14日
    瀏覽(22)
  • 【C++設(shè)計(jì)模式】用簡單工廠模式實(shí)現(xiàn)按汽車重量輸出汽車類型
  • C++面試:單例模式、工廠模式等簡單的設(shè)計(jì)模式 & 創(chuàng)建型、結(jié)構(gòu)型、行為型設(shè)計(jì)模式的應(yīng)用技巧

    ????????理解和能夠?qū)崿F(xiàn)基本的設(shè)計(jì)模式是非常重要的。這里,我們將探討兩種常見的設(shè)計(jì)模式:單例模式和工廠模式,并提供一些面試準(zhǔn)備的建議。 目錄 單例模式 (Singleton Pattern) 工廠模式 (Factory Pattern) 面試準(zhǔn)備? 1. 理解設(shè)計(jì)模式的基本概念 2. 掌握實(shí)現(xiàn)細(xì)節(jié) 3. 討論優(yōu)缺

    2024年02月01日
    瀏覽(21)
  • C++ 程序設(shè)計(jì):四大模式(工廠+裝飾+策略+觀察者)

    \\\"工廠+裝飾+策略+觀察者\(yùn)\\"是常見且常用的設(shè)計(jì)模式之一,但并不是指稱\\\"四大模式\\\"的官方術(shù)語。 \\\" 四大模式 \\\"通常是指指令式面向?qū)ο缶幊讨械乃膫€(gè)基本概念: 封裝 、 繼承 、 多態(tài) 和 抽象 。這四個(gè)概念是面向?qū)ο缶幊痰幕?工廠模式( 例:工廠方法模式 )中,通常存在

    2024年02月17日
    瀏覽(30)
  • 自學(xué)設(shè)計(jì)模式(簡單工廠模式、工廠模式、抽象工廠模式)

    使用工廠模式來生產(chǎn)某類對象(代碼簡化且容易維護(hù),類之間有血緣關(guān)系,可以通過工廠類進(jìn)行生產(chǎn)); 簡單工廠模式(用于創(chuàng)建簡單對象) 對于簡單工廠模式,需要的工廠類只有一個(gè); 在工廠類中的公共成員函數(shù)來創(chuàng)建所需對象; 工廠模式 簡單工廠模式會違反開放封閉

    2024年02月11日
    瀏覽(27)
  • 反射和工廠設(shè)計(jì)模式---工廠設(shè)計(jì)模式

    工廠模式(Factory Pattern)是開發(fā)中比較常用的設(shè)計(jì)模式之一。 它屬于創(chuàng)建型模式(單例模式就是創(chuàng)建型模式的一種),這種模式讓我們 在創(chuàng)建對象時(shí)不會直接暴露創(chuàng)建邏輯,而是通過使用一個(gè)共同的接口來完成對象的創(chuàng)建 。 工廠模式可以分為三種,分別是簡單工廠模式、工廠方

    2024年02月13日
    瀏覽(22)
  • 設(shè)計(jì)模式(二)、工廠模式--簡單工廠模式

    簡單工廠模式:又叫做靜態(tài)工廠方法模式,是由一個(gè)工廠對象決定創(chuàng)建出哪一種產(chǎn)品類的實(shí)例。 需要注意的是:簡單工廠模式屬于創(chuàng)建型模式,但不屬于23種GOF設(shè)計(jì)模式之一? 該模式主要有以下幾個(gè)模塊構(gòu)成: 具體說明結(jié)合代碼,如下: 代碼中主要是有一個(gè)cake接父類,兩個(gè)

    2024年02月13日
    瀏覽(22)
  • 設(shè)計(jì)模式(二)、工廠模式--工廠方法模式

    工廠方法模式是一種常用的創(chuàng)建型設(shè)計(jì)模式。它解決了簡單工廠模式的問題:如違反了開閉原則,其次可以用于更復(fù)雜的結(jié)構(gòu) 它的核心結(jié)構(gòu)有四個(gè)角色? 抽象工廠;具體工廠;抽象產(chǎn)品;具體產(chǎn)品 抽象工廠(抽象類或接口)不在負(fù)責(zé)具體的創(chuàng)建過程,即具體的代碼實(shí)現(xiàn)。只制定

    2024年02月16日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包