學習筆記 C C 設計模式 模板模式

2021-10-05 05:23:47 字數 1818 閱讀 1091

模板設計模式是一種非常簡單的設計模式,其主要是利用了虛函式的特性實現。非常適合應用在一些演算法、流程、業務邏輯是固定的形式,其中某些步驟的實現方式又無法確定下來的場景。

以下為模擬某晶元基於串列埠通訊的韌體公升級**,可以提供乙個 firmwareupgrade 的類用於使用者整合。考慮到跨平台,該類的串列埠操作介面宣告為純虛函式,由使用者自己根據所用平台實現,而不需要關注具體的公升級細節。

class firmwareupgrade

; virtual ~firmwareupgrade() {};

// 開始公升級

bool upgrade(const char *pfirmwarefile)

private:

bool sendcommand(int cmd, void *pdata, size_t size)

if(readserialport(package, sizeof(package)))

return package->done;

} bool init()

...return true;

} bool enterupgrademode()

bool erasepartition()

bool updatepartition(const char *pfirmwarefile)

} ...

fclose(fp);

return true;

} bool verifypartition()

bool resetdevice()

bool release()

};

如 windows 平台開發者,只需要利用  windows 平台下介面實現串列埠的開啟、寫入、讀取、關閉四個介面即可:

class firmwareupgradewin : public firmwareupgrade

...} virtual bool wrtieserialport(void *poutbuffer, size_t nlength)

return numberofbyteswrite;

} }virtual size_t readserialport(void *pinbuffer, size_t size)

return 0;

} virtual bool closeserialport() }

public

bool upgrade(const char *pfirmwarefile)

};int main()

如 linux 平台下的實現:

class firmwareupgradelinux : public firmwareupgrade

virtual bool wrtieserialport(void *poutbuffer, size_t nlength)

virtual size_t readserialport(void *pinbuffer, size_t size)

virtual bool closeserialport()

public:

bool upgrade(const char *pfirmwarefile)

};int main()

主要就是將差異化的抽離出來,延遲到子類實現,而固定的邏輯處理則由父類封裝並提供介面。相當於定義乙個模板,子類只要按照這個模板實現相應的介面,由父類反向呼叫子類所實現的介面,來完成具體的邏輯功能。這樣使用者不需要關心具體的公升級邏輯實現,只需要按照要求完成相應的介面,即可使用公升級功能,從而降低複雜性,又提公升了靈活性。

C C 設計模式 十二 模板模式

模板模式 template method模式 是行為模式之一,它把具有特定步驟演算法中的某些必要的處理委讓給抽象方法,通過子類繼承對抽象方法的不同實現改變整個演算法的行為。template method模式一般應用在具有以下條件的應用中 1.具有統一的操作步驟或操作過程 2.具有不同的操作細節 3....

設計模式學習筆記 模板 Template 模式

設計模式 設計模式,模板模式,template,模板方法 模板模式中的角色 模板模式可以很簡單的理解為,通過同乙個模具倒出來的模型。形狀上是一樣的,但是其上的花紋,紋理等卻可能完全不一樣。這裡的模板模式,特指template method模板方法模式。其原理為父類制定好規範 待實現的方法和模板方法。...

設計模式學習 模板模式

前面的時間學習了5種建立型設計模式和7種結構型設計模式,現在開始學習行為型的設計模式 在模板模式 template pattern 中,乙個抽象類公開定義了執行它的方法的方式 模板。它的子類可以按需要重寫方法實現,但呼叫將以抽象類中定義的方式進行。這種型別的設計模式屬於行為型模式。意圖 定義乙個操作...