C 模版方法模式

2021-09-20 11:49:48 字數 2076 閱讀 6662

模版方法模式(template method pattern)定義乙個操作中演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。

uml 結構圖:

優點:缺點:

招聘流程

談及校招,對學生們而言,最誘人的名字無疑是 bat,工資高、福利好,而且還能學到很多前沿的技術!當然,巨頭公司的 offer 不是那麼容易拿的,不僅要成績優異,更要技術過人。

建立抽象類

抽象類由 company 表示,它提供了一套固定的模板方法 recruit(),用於標準化演算法的骨架:

// abstract_class.h

#ifndef abstract_class_h

#define abstract_class_h

#include

// 公司

class company

// 校園招聘

void recruit()

// 宣講會

void careertalk()

// 接收簡歷

void receiveresume()

// 面試

virtual

void interview() = 0;

// 發放 offer

virtual

void offer() = 0;

};#endif // abstract_class_h

注意:相同的行為 careertalk() 和 receiveresume() 有預設實現,不同的行為 interview() 和 offer() 採用「佔位符」方式,需要由具體公司來實現。

建立具體類

具體公司有兩個 - alibaba、tencent,它們的面試、錄用方式不同:

// concrete_class.h

#ifndef concrete_class_h

#define concrete_class_h

#include "abstract_class.h"

#include

// 阿里

class alibaba : public company

virtual

void offer() override

};class tencent : public company

virtual

void offer() override

};#endif // concrete_class_h

建立客戶端校招開啟,offer 快到碗裡來:

// main.cpp

#include "concrete_class.h"

#ifndef safe_delete

#define safe_delete(p) }

#endif

int main()

輸出如下:

———- begin ———-

delivery

receive resume

first interview -> second interview -> third interview

30w

———- end ———-

———- begin ———-

delivery

receive resume

first interview -> second interview

25w

———- end ———-

模版方法模式

模版方法模式 定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中,模版方法使得子類可以不改變乙個演算法的結果即可重定義該演算法的某些特定步驟。比如說 要輸入乙個excel檔案,然後需要對該檔案內容進行校驗,校驗完成之後 插入資料庫。演算法的步驟就是 校驗 落庫 但是不同的檔案,裡面的資料不同,比...

模版方法模式

定義 定義乙個操作中演算法的框架,而將一些步驟延遲到子類中,使得子類可以不改變演算法的結構即可重定義該 演算法中的某些特定步驟。型別 行為類模式 類圖 1.7 template method pattern 事實上,模版方法是程式設計中乙個經常用到的模式。先來看乙個例子,某日,程式設計師a拿到乙個任...

模版方法模式

一 基本概述 下面列出咖啡 茶的沖泡方法。1.咖啡沖泡方法 1 把水煮沸 2 用沸水沖泡咖啡 3 把咖啡倒進杯子 4 家牛奶和糖 2.茶的沖泡方法 1 把水煮沸 2 用沸水浸泡茶葉 3 把茶倒進杯子 4 加檸檬 在使用 來完成這些方法時,我們一般想到的建立2個類 咖啡 茶類 來單獨實現這四個步驟。或...