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

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

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

簡介

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

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

角色

  • 抽象工廠 Abstract Factory

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

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

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

  • 具體工廠 Concrete Factory

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

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

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

類圖

如圖所示,Dialog抽象工廠可以創(chuàng)建Button抽象產(chǎn)品,WindowsDialog和WebDialog都是具體工廠,負責創(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)建型設計模式工廠方法Factory Method示例詳解的詳細內(nèi)容,更多關(guān)于c++ Factory Method的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

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

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

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

    C++鏈表實現(xiàn)通訊錄設計

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

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

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

    C語言二叉樹的非遞歸遍歷實例分析

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

    C語言編程大小端問題示例詳解教程

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

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

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

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

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

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

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

    C語言中單引號和雙引號用法詳解

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

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

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

最新評論

高清| 黑河市| 恭城| 青海省| 奉化市| 滕州市| 三门县| 许昌县| 板桥市| 洪泽县| 长葛市| 霍州市| 汾阳市| 丘北县| 山西省| 板桥市| 纳雍县| 福州市| 甘南县| 资阳市| 英吉沙县| 增城市| 太仓市| 台湾省| 潞城市| 大竹县| 永德县| 鹤山市| 三穗县| 闽侯县| 宁国市| 昌乐县| 那坡县| 贵南县| 连南| 怀安县| 石景山区| 锦屏县| 肇州县| 陵川县| 河西区|