亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

簡介

工廠方法中,每一個具體工廠類都對應(yīng)創(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都是具體工廠,負責(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è)計模式工廠方法Factory Method示例詳解的詳細內(nèi)容,更多關(guān)于c++ Factory Method的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C語言獲取文件大小的兩種方式

    C語言獲取文件大小的兩種方式

    因為音視頻開發(fā)的需要,經(jīng)常會寫一些文件輸入輸出的測試程序,常常用到獲取文件大小的函數(shù),本篇文章就記錄一下常用的兩種獲取文件大小的方式,希望對大家有所幫助
    2023-11-11
  • C++合并二叉樹的思路與示例代碼

    C++合并二叉樹的思路與示例代碼

    二叉樹大家應(yīng)該都不陌生,但是合并二叉樹呢?這篇文章主要給大家介紹了關(guān)于C++合并二叉樹的相關(guān)資料,文中給出了兩種解決的方法,大家可以根據(jù)需要選擇對應(yīng)的方法,需要的朋友可以參考下
    2021-08-08
  • C++實現(xiàn)LeetCode(106.由中序和后序遍歷建立二叉樹)

    C++實現(xiàn)LeetCode(106.由中序和后序遍歷建立二叉樹)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(106.由中序和后序遍歷建立二叉樹),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++實現(xiàn)LeetCode(37.求解數(shù)獨)

    C++實現(xiàn)LeetCode(37.求解數(shù)獨)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(37.求解數(shù)獨),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++?ffmpeg實現(xiàn)將視頻幀轉(zhuǎn)換成jpg或png等圖片

    C++?ffmpeg實現(xiàn)將視頻幀轉(zhuǎn)換成jpg或png等圖片

    有時播放實時流的時候有截圖的需求,需要將解碼出來的圖片保存本地或上傳服務(wù)器,這時就需要將avframe中的數(shù)據(jù)編碼成png、jpg等格式的圖片,我們使用ffmpeg的相關(guān)編碼器就可以實現(xiàn)功能,下面就來講講具體實現(xiàn)方法吧
    2023-03-03
  • 一文詳解C++11中的lambda函數(shù)

    一文詳解C++11中的lambda函數(shù)

    小編可以明確告訴大家:lambda函數(shù)是C++11中最重要的,使用最廣泛的,最具現(xiàn)代風(fēng)格的內(nèi)容,lambda函數(shù)的出現(xiàn)改變了C++編程的思維方式。所以快和小編學(xué)習(xí)一下C++11中l(wèi)ambda函數(shù)的使用吧
    2023-02-02
  • C++數(shù)據(jù)結(jié)構(gòu)繼承的概念與菱形繼承及虛擬繼承和組合

    C++數(shù)據(jù)結(jié)構(gòu)繼承的概念與菱形繼承及虛擬繼承和組合

    今天我要給大家介紹C++中更深入的內(nèi)容了。C++這門語言為了使代碼不冗余,做了些什么操作呢?C++的繼承就很好地實現(xiàn)了類層次的代碼復(fù)用,今天我就要來和大家好好聊一聊它了
    2022-02-02
  • 詳解C++中動態(tài)內(nèi)存管理和泛型編程

    詳解C++中動態(tài)內(nèi)存管理和泛型編程

    這篇文章主要為大家詳細介紹了C++中動態(tài)內(nèi)存管理和泛型編程的相關(guān)資料,文中示例代碼講解詳細,對我們學(xué)習(xí)C++具有一定幫助,感興趣的小伙伴快跟隨小編一起學(xué)習(xí)一
    2022-10-10
  • 基于Qt實現(xiàn)電子木魚小游戲

    基于Qt實現(xiàn)電子木魚小游戲

    今年最火爆的解壓小游戲電子木魚,現(xiàn)在許多軟件都上架了這個小程序。我在網(wǎng)上看了一下基本上都是用py和Java寫的,所以我用QT重新寫了一下,作為小白練手項目非常適合,快跟隨小編一起學(xué)習(xí)一下吧
    2023-01-01
  • C語言中函數(shù)返回字符串的方法匯總

    C語言中函數(shù)返回字符串的方法匯總

    C語言返回字符串函數(shù)共有四種方式,分別如下:使用堆空間,返回申請的堆地址,注意釋放、函數(shù)參數(shù)傳遞指針,返回該指針、返回函數(shù)內(nèi)定義的靜態(tài)變量(共享)、返回全局變量
    2017-05-05

最新評論