設計模式--Pimpl(pointer to implementation 指向實現的指標)
#include "autotimer.h" #include <iostream> #if _WIN32 #include <windows.h> #else #include <sys/time.h> #endif class AutoTimer::Imple { public: double GetElapsed() const { #ifdef _WIN32 return (GetTickCount() - mSmStartTime) / 1e3; #else struct timeval mEndTime; gettimeofday(&mEndTime, NULL); double t1 = mStartTime.tv_usec/1e6 + mStartTime.tv_sec ; double t2 = mEndTime.tv_usec/1e6 + mEndTime.tv_sec ; return t2 - t1; #endif } std::string mName; #ifdef _WIN32 DWORD mStartTime; #else struct timeval mStartTime; #endif }; AutoTimer::AutoTimer(const std::string name):mImpl(new AutoTimer::Imple) { mimpl->mName = name; #ifdef _WIN32 mimpl->mStartTime = GetTickCount(); #else gettimeofday(&mimpl->mStartTime, NULL); #endif } AutoTimer::~AutoTimer() { std::cout << mimpl->mName << ": took" << mimpl->GetElapsed() << "secs" << std::endl; delete mimpl; mimpl = NULL; }
相關推薦
設計模式--Pimpl(pointer to implementation 指向實現的指標)
#include "autotimer.h" #include <iostream> #if _WIN32 #include <windows.h> #else #include <sys/time.h> #endif class AutoTimer::Imple {
減少編譯時間:pointer to implementation(Impl設計模式)
PIMPL(Private Implementation 或 Pointer to Implementation)是通過一個私有的成員指標,將指標所指向的類的內部實現資料進行隱藏。 1)降低模組的耦合。因為隱藏了類的實現,被隱藏的類相當於原類不可見,對隱藏的類進行修改
設計模式一(續)
pan har cnblogs 變量 ring 區別 ack iostream 模式 本篇是接著設計模一:觀察者模式的續寫。 為什麽要寫這一篇呢: java在main函數裏new出的對象都是局部變量,而用C++ 在main函數裏new出來的都是 動態分配到堆區的。 那麽可不
設計模式總結(二)
靈活性 mil 一個 blog 以及 對象模式 結構型設計模式 con 建模 設計模式可分為三種:創建型設計模式。結構型設計模式和行為型設計模式。 一、創建型設計模式 在設計模式中,創建型設計模式處理對象創建過程的設計模式。它依據實際情況來決定詳細如何創建對象。創建型模
23種設計模式介紹(一)---- 創建型模式
接口 ret static 深復制 return 對象 相互 object c png 由於設計模式篇幅比較大,如果在一篇文章講完所有的設計模式的話不利於閱讀。於是我把它分為三篇文章 23種設計模式介紹(一)---- 創建型模式 23種設計模式介紹(二)---- 結構型模
c++ 設計模式6 (Decorator 裝飾模式)
ces 軟件組件 類繼承 通過 write height cte 中間 類型 4. “單一職責”類模式 在軟件組件的設計中,如果責任劃分的不清晰,使用繼承得到的結果往往是隨著需求的變化,子類急劇膨脹,同時充斥著重復代碼,這時候的關鍵是劃清責任。 典型模式代表: Decora
c++ 設計模式7 (Bridge 橋模式)
設計模式 play 復制代碼 復用性 ict 只有一個 mage 單一職責原則 sea 4.2 Bridge 橋模式 動機: 由於某些類型的固有的實現邏輯,使得它們具有兩個變化的維度,乃至多個變化的維度。 代碼示例: 實現一個Messager,含有基本功能PlaySo
c++ 設計模式9 (Abstract Factory 抽象工廠模式)
構建 數據庫 strac 無需 div exec oracl dfa tle 5.2 抽象工廠模式 動機:在軟件系統中,經常面臨著“一系列相互依賴的對象”的創建工作;同時,由於需求的變化,往往存在更多系列對象的創建工作。 代碼示例: 實現利用數據庫的業務邏輯,支持多數據
c++ 設計模式8 (Factory Method 工廠方法)
更改 itl logs 客戶 eos image 分享 一個 工廠方法模式 5. “對象創建”類模式 通過“對象創建”類模式繞開new,來避免對象創建(new)過程中所導致的緊耦合(依賴具體類),從而支持對象創建的穩定。它是接口抽象之後的第一步工作。 5.1 工廠方法 動機
設計模式解密(4)- 模板方法模式
編程人員 自己 ack 層次 check target hub 提取 images 1、簡介 定義:一個操作中算法的框架,而將一些步驟延遲到子類中,使得子類可以不改變算法的結構即可重定義該算法中的某些特定步驟。 模板方法模式,一般是為了統一子類的算法實現步驟,所使用
設計模式解密(5)- 外觀模式(門面模式)
src 內部 耦合度 解決 臺電 統一 方法 英文 適配器 1、簡介 外觀模式提供了一個統一的接口,用來訪問子系統中的一群接口。外觀定義了一個高層接口,讓子系統更容易使用。 使用外觀模式時,我們創建了一個統一的類,用來包裝子系統中一個或多個復雜的類,客戶端可以直接通
設計模式解密(6) - 建造者模式
簡單的 對比 ide nbsp blog art 是把 部分 shp 1、簡介 定義:將一個復雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。 英文:Builder 類型:創建類模式 2、原理及組成 引:類圖 四個要素 產品類:
PYTHON設計模式學習(3):Singleton pattern
blog ora 參考 擁有 沒有 _屬性 ces cti ttr 參考了其他的博客:http://ghostfromheaven.iteye.com/blog/1562618 #-*- encoding=utf-8 -*- print ‘--------------
設計模式總結 (五)
param href com 參數化 耦合度 實現 需要 進行 導致 命令模式: 將一個請求封裝為一個對象,從而使你可用不同的請求對客戶進行參數化;對請求排隊或記錄請求日誌,以及支持可取消的操作。例:http://www.cnblogs.com/wangjq/archiv
設計模式解密(22)- 訪問者模式
ges action oid 使用 復合 con 9.png ava array 前言:訪問者模式拆分 訪問者模式基礎篇 :http://www.cnblogs.com/JsonShare/p/7380772.html 訪問者模式擴展篇 - 分派的概念: htt
設計模式解密(22)- 訪問者模式 - 擴展篇(分派的概念)
綁定 接受 傳遞 ble 實例 擴展 back exp 重載方法 前言:訪問者模式拆分 訪問者模式基礎篇 :http://www.cnblogs.com/JsonShare/p/7380772.html 訪問者模式擴展篇 - 分派的概念: http://www.cn
java設計模式系列之設計模式概要(1)
而不是 行為型模式 一句話 創建 rom 多次 ati 代理模式 之間 一、什麽是設計模式 設計模式(Design pattern)是一套被反復使用、多數人知曉的、經過分類編目的、代碼設計經驗的總結。使用設計模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。
設計模式學習(一)-概述
項目 site 相對 實體 pattern 需要 gre 維護 pri 設計模式(Design Patterns) ——可復用面向對象軟件的基礎 設計模式(Design pattern)是一套被反復使用、多
設計模式學習(二)“觀察者模式” (C#)
original pan 學習筆記 pri 接口 program date contain 兩個 《深入淺出設計模式》學習筆記第二章 需求: 開發一套氣象監測應用,如圖: 氣象站,目前有三種裝置,溫度、濕度和氣壓感應裝置。 WeatherData對象追蹤氣象站的數據,並更
java23種設計模式3(轉)
訂閱 esp 兩個類 叠代器 請求 是個 plus 集合類 統一 本章是關於設計模式的最後一講,會講到第三種設計模式——行為型模式,共11種:策略模式、模板方法模式、觀察者模式、叠代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、解釋器模式。