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

重溫設(shè)計(jì)模式 --- 抽象工廠模式

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

引言

抽象工廠模式一種創(chuàng)建型設(shè)計(jì)模式,它提供了一種方式來(lái)封裝一組具有相同主題的工廠,而不必指定它們具體的類。這樣,客戶端代碼就可以使用抽象工廠來(lái)創(chuàng)建一組相關(guān)的對(duì)象,而不必關(guān)心實(shí)際創(chuàng)建的具體類。

抽象工廠模式有以下幾個(gè)主要角色:

  • 抽象工廠(AbstractFactory):聲明用于創(chuàng)建抽象產(chǎn)品的操作的接口。

  • 工廠實(shí)現(xiàn)(ConcreteFactory):實(shí)現(xiàn)創(chuàng)建具體產(chǎn)品對(duì)象的操作。

  • 抽象產(chǎn)品(AbstractProduct):聲明產(chǎn)品對(duì)象類型的接口。

  • 產(chǎn)品實(shí)現(xiàn)(Product):定義由相應(yīng)的具體工廠創(chuàng)建的產(chǎn)品對(duì)象,實(shí)現(xiàn)AbstractProduct接口。

下面使用C#實(shí)現(xiàn)抽象工廠模式:

抽象工廠

定義一個(gè)抽象工廠接口,其中包含了創(chuàng)建不同產(chǎn)品的方法:

public interface IAbstractFactory
{
    IProductA CreateProductA();
    IProductB CreateProductB();
}

工廠實(shí)現(xiàn)

定義具體的工廠類,實(shí)現(xiàn)抽象工廠接口:

public class ConcreteFactory1 : IAbstractFactory
{
    public IProductA CreateProductA()
    {
        return new ConcreteProductA1();
    }

    public IProductB CreateProductB()
    {
        return new ConcreteProductB1();
    }
}

public class ConcreteFactory2 : IAbstractFactory
{
    public IProductA CreateProductA()
    {
        return new ConcreteProductA2();
    }

    public IProductB CreateProductB()
    {
        return new ConcreteProductB2();
    }
}

在上述示例中,我們定義了兩個(gè)具體工廠類:ConcreteFactory1ConcreteFactory2。這兩個(gè)工廠類都實(shí)現(xiàn)了IAbstractFactory接口,并且分別提供了不同的產(chǎn)品實(shí)現(xiàn)。

抽象產(chǎn)品

public interface IProductA
{
    string GetName();
}

產(chǎn)品實(shí)現(xiàn)

public class ConcreteProductA1 : IProductA
{
    public string GetName()
    {
        return "ProductA1";
    }
}

public class ConcreteProductA2 : IProductA
{
    public string GetName()
    {
        return "ProductA2";
    }
}

public interface IProductB
{
    string GetName();
}

public class ConcreteProductB1 : IProductB
{
    public string GetName()
    {
        return "ProductB1";
    }
}

public class ConcreteProductB2 : IProductB
{
    public string GetName()
    {
        return "ProductB2";
    }
}

下面,我們可以使用抽象工廠來(lái)創(chuàng)建一組相關(guān)的對(duì)象:

public class Client
{
    private IAbstractFactory factory;

    public Client(IAbstractFactory factory)
    {
        this.factory = factory;
    }

    public void Run()
    {
        var productA = factory.CreateProductA();
        var productB = factory.CreateProductB();

        Console.WriteLine(productA.GetName());
        Console.WriteLine(productB.GetName());
    }
}

static void Main(string[] args)
{
    var client1 = new Client(new ConcreteFactory1());
    client1.Run();

    var client2 = new Client(new ConcreteFactory2());
    client2.Run();
}

輸出:

ProductA1
ProductB1

ProductA2
ProductB2

總結(jié)

上面的示例中,我們使用抽象工廠模式來(lái)創(chuàng)建了一組相關(guān)的對(duì)象,但是需要注意的是,它適用于創(chuàng)建一組相關(guān)的產(chǎn)品對(duì)象,但是當(dāng)產(chǎn)品族的變化引起整個(gè)工廠等級(jí)結(jié)構(gòu)的變化時(shí),抽象工廠模式就不適用了。

此外,抽象工廠模式還存在一些缺點(diǎn),例如:

  • 新增產(chǎn)品會(huì)導(dǎo)致工廠接口的擴(kuò)展。如果需要新增產(chǎn)品,就需要修改所有的工廠類,這會(huì)帶來(lái)一些不必要的麻煩。

  • 可能會(huì)導(dǎo)致類層次結(jié)構(gòu)的復(fù)雜度增加。如果有多個(gè)產(chǎn)品族,就需要定義多個(gè)工廠接口,這會(huì)增加類層次結(jié)構(gòu)的復(fù)雜度。

因此,在使用抽象工廠模式時(shí),需要根據(jù)具體情況進(jìn)行權(quán)衡和選擇。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-536759.html

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

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

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

相關(guān)文章

  • 【設(shè)計(jì)模式】抽象工廠模式

    【設(shè)計(jì)模式】抽象工廠模式

    抽象工廠模式(Abstract Factory Pattern)是圍繞一個(gè)超級(jí)工廠創(chuàng)建其他工廠。該超級(jí)工廠又稱為其他工廠的工廠。這種類型的設(shè)計(jì)模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對(duì)象的最佳方式。 在抽象工廠模式中,接口是負(fù)責(zé)創(chuàng)建一個(gè)相關(guān)對(duì)象的工廠,不需要顯式指定它們的類。每個(gè)

    2024年02月13日
    瀏覽(28)
  • 設(shè)計(jì)模式 - 抽象工廠模式

    設(shè)計(jì)模式 - 抽象工廠模式

    學(xué)完工廠模式,才發(fā)現(xiàn)還有一個(gè)抽象工廠模式;學(xué)習(xí)后發(fā)現(xiàn)不論是通過(guò)接口方式、還是繼承方式,都可以使用抽象工廠模式;但是個(gè)人建議更多的時(shí)候,我們可以優(yōu)先考慮接口方式,畢竟 單繼承,多實(shí)現(xiàn) 設(shè)計(jì)模式分為三種類型,共23種 創(chuàng)建型模式:?jiǎn)卫J健⒐S模式、抽

    2024年02月13日
    瀏覽(28)
  • 設(shè)計(jì)模式(三):抽象工廠模式

    設(shè)計(jì)模式(三):抽象工廠模式

    抽象工廠模式 (Abstract Factory Pattern)屬于創(chuàng)建型模式,是圍繞一個(gè)超級(jí)工廠創(chuàng)建其他工廠。該超級(jí)工廠又稱為其他工廠的工廠。 在 抽象工廠模式 中,接口是負(fù)責(zé)創(chuàng)建一個(gè)相關(guān)對(duì)象的工廠,不需要顯式指定它們的類。每個(gè)生成的工廠都能按照工廠模式提供對(duì)象。 通過(guò)使用 抽

    2024年04月25日
    瀏覽(23)
  • 設(shè)計(jì)模式(3)抽象工廠模式

    設(shè)計(jì)模式(3)抽象工廠模式

    一、介紹: 1、定義:提供一個(gè)創(chuàng)建一系列相關(guān)或相互依賴對(duì)象的接口,而無(wú)須指定它們具體的類。 2、組成結(jié)構(gòu): (1)抽象工廠角色:擔(dān)任這個(gè)角色的是工廠方法模式的核心,它是與應(yīng)用程序無(wú)關(guān)的。任何在模式中創(chuàng)建對(duì)象的工廠類必須實(shí)現(xiàn)這個(gè)接口。 (2)具體工廠角色

    2024年02月11日
    瀏覽(23)
  • 【設(shè)計(jì)模式專題之抽象工廠模式】3. 家具工廠

    題目描述 小明家新開了兩個(gè)工廠用來(lái)生產(chǎn)家具,一個(gè)生產(chǎn)現(xiàn)代風(fēng)格的沙發(fā)和椅子,一個(gè)生產(chǎn)古典風(fēng)格的沙發(fā)和椅子,現(xiàn)在工廠收到了一筆訂單,請(qǐng)你幫他設(shè)計(jì)一個(gè)系統(tǒng),描述訂單需要生產(chǎn)家具的信息。 輸入描述 輸入的第一行是一個(gè)整數(shù) N(1 ≤ N ≤ 100),表示訂單的數(shù)量。

    2024年03月12日
    瀏覽(31)
  • 結(jié)構(gòu)型設(shè)計(jì)模式-單例模式/工廠模式/抽象工廠

    創(chuàng)建型設(shè)計(jì)模式-單例模式/工廠模式/抽象工廠 行為型設(shè)計(jì)模式:模板設(shè)計(jì)模式/觀察者設(shè)計(jì)模式/策略設(shè)計(jì)模式 C#反射機(jī)制實(shí)現(xiàn)開閉原則的簡(jiǎn)單工廠模式 設(shè)計(jì)模式可以分為三種類型: 創(chuàng)建型設(shè)計(jì)模式、結(jié)構(gòu)型設(shè)計(jì)模式和行為型設(shè)計(jì)模式 。 創(chuàng)建型設(shè)計(jì)模式:這些模式涉及到 對(duì)

    2024年02月11日
    瀏覽(24)
  • 設(shè)計(jì)模式-創(chuàng)建型模式-抽象工廠模式

    設(shè)計(jì)模式-創(chuàng)建型模式-抽象工廠模式

    抽象工廠模式(Abstract Factory Pattern):提供一個(gè)創(chuàng)建一系列相關(guān)或相互依賴對(duì)象的接口,而無(wú)須指定它們具體的類。抽象工廠模式又稱為Kit模式,它是一種對(duì)象創(chuàng)建型模式。 由于工廠方法模式中的每個(gè)工廠只生產(chǎn)一類產(chǎn)品,可能會(huì)導(dǎo)致系統(tǒng)中存在大量的工廠類,勢(shì)必會(huì)增加系

    2024年02月22日
    瀏覽(28)
  • [設(shè)計(jì)模式]創(chuàng)建型模式-抽象工廠模式

    抽象工廠模式是一種創(chuàng)建型設(shè)計(jì)模式,它提供了一種創(chuàng)建一系列相關(guān)或相互依賴對(duì)象的接口,而無(wú)需指定它們具體的類。抽象工廠模式將一組具有共同主題的單個(gè)工廠封裝起來(lái),它提供接口用于創(chuàng)建相關(guān)或依賴對(duì)象的家族,而不需要指定具體的類。 抽象工廠模式包含以下幾個(gè)

    2024年03月08日
    瀏覽(18)
  • 設(shè)計(jì)模式之抽象工廠模式筆記

    設(shè)計(jì)模式之抽象工廠模式筆記

    記錄下學(xué)習(xí)設(shè)計(jì)模式-抽象工廠模式的寫法。 意圖 :提供一個(gè)創(chuàng)建一系列相關(guān)或相互依賴對(duì)象的接口,而無(wú)須指定它們具體的類。 結(jié)構(gòu) : 其中: AbstractFactory聲明一個(gè)創(chuàng)建抽象產(chǎn)品對(duì)象的操作接口。 ConcreteFactory實(shí)現(xiàn)創(chuàng)建具體產(chǎn)品對(duì)象的操作。 AbstractProduct為一類產(chǎn)品對(duì)象聲明一

    2024年02月09日
    瀏覽(25)
  • java設(shè)計(jì)模式【抽象工廠模式】

    java設(shè)計(jì)模式【抽象工廠模式】

    抽象工廠模式 是對(duì)簡(jiǎn)單工廠模式的一個(gè)變種,它允許通過(guò)一個(gè)統(tǒng)一的接口來(lái)創(chuàng)建不同的產(chǎn)品實(shí)例,而無(wú)需指定具體的子類。在這個(gè)模式中,我們只關(guān)心產(chǎn)品的抽象接口,而將具體的產(chǎn)品實(shí)現(xiàn)留給子類去實(shí)現(xiàn)。這樣,我們可以通過(guò)創(chuàng)建不同的工廠對(duì)象來(lái)創(chuàng)建不同的產(chǎn)品實(shí)例,而

    2024年02月05日
    瀏覽(31)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包