最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c++?創(chuàng)建型設(shè)計(jì)模式工廠方法Factory?Method示例詳解

 更新時(shí)間:2023年09月06日 11:50:08   作者:菜皮日記  
這篇文章主要為大家介紹了c++?創(chuàng)建型設(shè)計(jì)模式工廠方法Factory?Method示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

簡(jiǎn)介

工廠方法中,每一個(gè)具體工廠類都對(duì)應(yīng)創(chuàng)建一個(gè)具體產(chǎn)品類,所有具體工廠類都實(shí)現(xiàn)抽象工廠,所有具體產(chǎn)品類都實(shí)現(xiàn)抽象產(chǎn)品。

抽象工廠定義了創(chuàng)建抽象產(chǎn)品的方法簽名,具體工廠類各自實(shí)現(xiàn)各自邏輯,來(lái)創(chuàng)建具體的產(chǎn)品。

角色

  • 抽象工廠 Abstract Factory

    定義創(chuàng)建產(chǎn)品的方法簽名,即Factory Method

  • 抽象產(chǎn)品 Abstract Product

    定義產(chǎn)品的基本屬性

  • 具體工廠 Concrete Factory

    實(shí)現(xiàn)自抽象工廠,并實(shí)現(xiàn) Factory Method,實(shí)現(xiàn)如何創(chuàng)建具體產(chǎn)品。

  • 具體產(chǎn)品 Concrete Product

    實(shí)現(xiàn)具體產(chǎn)品基本屬性

類圖

如圖所示,Dialog抽象工廠可以創(chuàng)建Button抽象產(chǎn)品,WindowsDialog和WebDialog都是具體工廠,負(fù)責(zé)創(chuàng)建WindownsButton和HTMLButton。

代碼

abstract class Creator
{
    abstract public function factoryMethod(): Product;
    public function someOperation(): string
    {
        $product = $this->factoryMethod();
        $result = "Creator: The same creator's code has just worked with " . $product->operation();
        return $result;
    }
}
class ConcreteCreator1 extends Creator
{
    public function factoryMethod(): Product
    {
        return new ConcreteProduct1();
    }
}
class ConcreteCreator2 extends Creator
{
    public function factoryMethod(): Product
    {
        return new ConcreteProduct2();
    }
}
interface Product
{
    public function operation(): string;
}
class ConcreteProduct1 implements Product
{
    public function operation(): string
    {
        return "{Result of the ConcreteProduct1}";
    }
}
class ConcreteProduct2 implements Product
{
    public function operation(): string
    {
        return "{Result of the ConcreteProduct2}";
    }
}
function clientCode(Creator $creator)
{
    echo "Client: I'm not aware of the creator's class, but it still works.\n" . $creator->someOperation() . "\n";
}
echo "App: Launched with the ConcreteCreator1.\n";
clientCode(new ConcreteCreator1());
echo "App: Launched with the ConcreteCreator2.\n";
clientCode(new ConcreteCreator2());

output

App: Launched with the ConcreteCreator1.
Client: I'm not aware of the creator's class, but it still works.
Creator: The same creator's code has just worked with {Result of the ConcreteProduct1}
App: Launched with the ConcreteCreator2.
Client: I'm not aware of the creator's class, but it still works.
Creator: The same creator's code has just worked with {Result of the ConcreteProduct2}

以上就是c++ 創(chuàng)建型設(shè)計(jì)模式工廠方法Factory Method示例詳解的詳細(xì)內(nèi)容,更多關(guān)于c++ Factory Method的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C++ 在堆上開辟與釋放二維、三維指針詳細(xì)解析

    C++ 在堆上開辟與釋放二維、三維指針詳細(xì)解析

    一維指針其實(shí)就相當(dāng)于一維數(shù)組,不用去看書上所說的數(shù)組在內(nèi)存中的首地址這些晦澀的話,以此類推 二維指針就相當(dāng)于二維數(shù)組,新手對(duì)一維數(shù)組的開辟與釋放比較容易熟悉
    2013-09-09
  • C++鏈表實(shí)現(xiàn)通訊錄設(shè)計(jì)

    C++鏈表實(shí)現(xiàn)通訊錄設(shè)計(jì)

    這篇文章主要為大家詳細(xì)介紹了C++鏈表實(shí)現(xiàn)通訊錄設(shè)計(jì),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C++實(shí)現(xiàn)Dijkstra算法的示例代碼

    C++實(shí)現(xiàn)Dijkstra算法的示例代碼

    迪杰斯特拉算法(Dijkstra)是由荷蘭計(jì)算機(jī)科學(xué)家狄克斯特拉于1959年提出的,因此又叫狄克斯特拉算法。是從一個(gè)頂點(diǎn)到其余各頂點(diǎn)的最短路徑算法。本文將用C++實(shí)現(xiàn)Dijkstra算法,需要的可以參考一下
    2022-07-07
  • C語(yǔ)言二叉樹的非遞歸遍歷實(shí)例分析

    C語(yǔ)言二叉樹的非遞歸遍歷實(shí)例分析

    這篇文章主要介紹了C語(yǔ)言二叉樹的非遞歸遍歷,包括了先序遍歷、中序遍歷與后序遍歷,需要的朋友可以參考下
    2014-09-09
  • C語(yǔ)言編程大小端問題示例詳解教程

    C語(yǔ)言編程大小端問題示例詳解教程

    這篇文章主要為大家介紹了C語(yǔ)言編程大小端問題解決的示例內(nèi)容詳解教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-11-11
  • C++ 將文件數(shù)據(jù)一次性加載進(jìn)內(nèi)存實(shí)例代碼

    C++ 將文件數(shù)據(jù)一次性加載進(jìn)內(nèi)存實(shí)例代碼

    這篇文章主要介紹了C++ 將文件數(shù)據(jù)一次性加載進(jìn)內(nèi)存實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • C++強(qiáng)制類型轉(zhuǎn)換的四種方式

    C++強(qiáng)制類型轉(zhuǎn)換的四種方式

    本文主要介紹了C++強(qiáng)制類型轉(zhuǎn)換的四種方式,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • 使用C語(yǔ)言實(shí)現(xiàn)vector動(dòng)態(tài)數(shù)組的實(shí)例分享

    使用C語(yǔ)言實(shí)現(xiàn)vector動(dòng)態(tài)數(shù)組的實(shí)例分享

    vector是指能夠存放任意類型的動(dòng)態(tài)數(shù)組,而C語(yǔ)言中并沒有面向?qū)ο蟮腃++那樣內(nèi)置vector類,所以我們接下來(lái)就來(lái)看一下使用C語(yǔ)言實(shí)現(xiàn)vector動(dòng)態(tài)數(shù)組的實(shí)例,需要的朋友可以參考下
    2016-05-05
  • C語(yǔ)言中單引號(hào)和雙引號(hào)用法詳解

    C語(yǔ)言中單引號(hào)和雙引號(hào)用法詳解

    C語(yǔ)言中,單引號(hào)用于表示單個(gè)字符常量,而雙引號(hào)用于表示字符串,單引號(hào)中的字符是int類型,雙引號(hào)中的字符串是以null字符結(jié)尾的字符數(shù)組,本文介紹C語(yǔ)言中單引號(hào)和雙引號(hào)用法,感興趣的朋友一起看看吧
    2025-01-01
  • C++中的sort與自定義排序詳解

    C++中的sort與自定義排序詳解

    std::sort是C++模板函數(shù),采用內(nèi)省排序(混合快速、堆、插入排序)動(dòng)態(tài)優(yōu)化性能,確保O(nlogn)效率與魯棒性,通過比較器、Lambda或重載運(yùn)算符實(shí)現(xiàn)自定義排序邏輯
    2025-08-08

最新評(píng)論

河西区| 瑞安市| 舞钢市| 翁源县| 稻城县| 陈巴尔虎旗| 常熟市| 鹿邑县| 香港| 诏安县| 罗城| 宜春市| 麻阳| 寿光市| 长宁区| 忻州市| 临猗县| 宾阳县| 中牟县| 闸北区| 许昌市| 同心县| 永城市| 凤冈县| 汉寿县| 漯河市| 平顺县| 阿鲁科尔沁旗| 全南县| 洛南县| 秦皇岛市| 景东| 梁平县| 灵石县| 吉木萨尔县| 茶陵县| 武义县| 安宁市| 开封县| 永丰县| 贵阳市|