AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

C++ 慣用法之 Policy-based design

來源: 責編: 時間:2024-02-02 16:56:45 242觀看
導讀一、背景Policy-based 是 C++ 的一種基于模板和繼承的設計方法。通過模板方式可以實現在編譯期給指定的類配置方法,而傳統的策略模式則是在運行期對類的方法進行動態配置。所謂設計模式沒有一定不變的使用準則,同一個問

一、背景

Policy-based 是 C++ 的一種基于模板和繼承的設計方法。通過模板方式可以實現在編譯期給指定的類配置方法,而傳統的策略模式則是在運行期對類的方法進行動態配置。jXr28資訊網——每日最新資訊28at.com

所謂設計模式沒有一定不變的使用準則,同一個問題可以有多種模式來解決,采用有效的設計模式可以減少重復性代碼以及用最小的改動來應對變化。多了解一種模式,可以增加一種解決問題的思路。jXr28資訊網——每日最新資訊28at.com

jXr28資訊網——每日最新資訊28at.com

二、Policy-based design

1.概述

該模式中的繼承是 implement-by 的關系,而非 Is-A 的關系,其重點是模板而非繼承。jXr28資訊網——每日最新資訊28at.com

2.問題描述

假設一個類提供一個對外的接口,但在不同的場景中有不同的實現方式,以下是一種常見的實現代碼:jXr28資訊網——每日最新資訊28at.com

class demoClass{public:  void func(int type){    //根據場景指定實現方式    switch (type)    {    case 1:      func1(); break;    case 2:      func2(); break;    case 3:      func3(); break;    default:      break;    }  }private:  void func1() { cout << "used func1" << endl; }//不同的實現方式  void func2() { cout << "used func1" << endl; }  void func3() { cout << "used func1" << endl; }};

在以上代碼中通過傳入一個標記參數 type 來實現不同的方法調用,當需要增加更多的實現方式時,需要在類的方法中增加相應的判斷代碼,對既有代碼進行修改意味著增加了出錯的可能。jXr28資訊網——每日最新資訊28at.com

3.使用 Policy-based

上述問題的解決可以有多種方式,本文記錄一下 Policy-based design 方式。jXr28資訊網——每日最新資訊28at.com

template<typename T>class demoClass:public T{};class func_policy1{public:  void func() { cout << "used func1" << endl; }};class func_policy2{public:  void func() { cout << "used func2" << endl; }};int main(){  demoClass<func_policy1> demo;  demo.func();  system("pause");  return 0;}

圖片圖片jXr28資訊網——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-71933-0.htmlC++ 慣用法之 Policy-based design

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 瀏覽器也擁有了原生的 “時間切片” 能力!

下一篇: Cron表達式語法全解析

標簽:
  • 熱門焦點
  • 盧偉冰長文解析K60至尊版 對Redmi有著里程碑式的意義

    在今天的Redmi后性能時代戰略發布會結束之后,Redmi總經理盧偉冰又帶來了一篇長文,詳解了為什么 Redmi 要開啟后性能時代?為什么選擇和 MediaTek、Pixelworks 深度合作?以及后性
  • K60至尊版剛預熱 一加Ace2 Pro正面硬剛

    Redmi這邊剛如火如荼的宣傳了K60 Ultra的各種技術和硬件配置,作為競品的一加也坐不住了。一加中國區總裁李杰發布了兩條微博,表示在自家的一加Ace2上早就已經采用了和PixelWo
  • 紅魔電競平板評測:大屏幕硬實力

    前言:三年的疫情因為要上網課的原因激活了平板市場,如今網課的時代已經過去,大家的生活都恢復到了正軌,這也就意味著,真正考驗平板電腦生存的環境來了。也就是面對著這種殘酷的
  • 6月iOS設備好評榜:第一蟬聯榜首近一年

    作為安兔兔各種榜單里變化最小的那個,2023年6月的iOS好評榜和上個月相比沒有任何排名上的變化,僅僅是部分設備好評率的下降,長年累月的用戶評價和逐漸退出市場的老款機器讓這
  • 線程通訊的三種方法!通俗易懂

    線程通信是指多個線程之間通過某種機制進行協調和交互,例如,線程等待和通知機制就是線程通訊的主要手段之一。 在 Java 中,線程等待和通知的實現手段有以下幾種方式:Object 類下
  • 得物效率前端微應用推進過程與思考

    一、背景效率工程隨著業務的發展,組織規模的擴大,越來越多的企業開始意識到協作效率對于企業團隊的重要性,甚至是決定其在某個行業競爭中突圍的關鍵,是企業長久生存的根本。得物
  • JavaScript學習 -AES加密算法

    引言在當今數字化時代,前端應用程序扮演著重要角色,用戶的敏感數據經常在前端進行加密和解密操作。然而,這樣的操作在網絡傳輸和存儲中可能會受到惡意攻擊的威脅。為了確保數據
  • 自動化在DevOps中的力量:簡化軟件開發和交付

    自動化在DevOps中扮演著重要角色,它提升了DevOps的效能。通過自動化工具和方法,DevOps團隊可以實現以下目標:消除手動和重復性任務。簡化流程。在整個軟件開發生命周期中實現更
  • 超級標準版旗艦!iQOO 11S全球首發iQOO超算獨顯芯片

    上半年已接近尾聲,截至目前各大品牌旗下的頂級旗艦都已悉數亮相,而下半年即將推出的頂級旗艦已經成為了數碼圈爆料的主流,其中就包括全新的iQOO 11S系
Top