C語言實現《設計模式之禪》之模板模式

2021-06-20 05:36:06 字數 2071 閱讀 3058

#include

#include

#include

/*c語言實現設計模式之禪  模板模式   類圖詳見p95*/

#define false  0

#define true   1

typedef int boolean;

/*抽象模板類*/

typedef struct _hummermodel hummermodel;

struct _hummermodel

;/*模板方法的實現框架*/

void run(hummermodel *phummermodel)

phummermodel->stop();

return;

}hummermodel *createhummermodel(void)

memset(phummermodel, 0, sizeof(hummermodel));

phummermodel->run = run;  /*掛接模板方法*/

return phummermodel;

}/*具體產品類, 繼承模板類*/

typedef struct _humerh1model humerh1model;

static boolean s_humerh1modelalarmflag = false;

struct _humerh1model

;void humerh1setalarm(boolean isalarm)

boolean humerh1isalarm(void)

void humerh1start(void)

void humerh1alarm(void)

void humerh1engineboom(void)

void humerh1stop(void)

void deletehumerh1model(humerh1model *phumerh1model)

if(phumerh1model != null)

}humerh1model *createhumerh1model(void)

memset(phumerh1model, 0, sizeof(humerh1model));

phumerh1model->phummermodel = createhummermodel();

if(null == phumerh1model->phummermodel)

/*例項化子類自有方法*/

phumerh1model->setalarm = humerh1setalarm;

phumerh1model->deletehumerh1model = deletehumerh1model;

/*將父類中的基本方法例項化, 模板方法就使用父類方法*/

phumerh1model->phummermodel->start = humerh1start;  

phumerh1model->phummermodel->engineboom = humerh1engineboom;

phumerh1model->phummermodel->alarm = humerh1alarm;

phumerh1model->phummermodel->stop = humerh1stop;

/*將父類中的鉤子方法例項化*/

phumerh1model->phummermodel->isalarm = humerh1isalarm;

return phumerh1model;

}/*場景*/

void main()

printf("----------h1型號悍馬-----------\n");

printf("是否需要喇叭響? 0-不需要  1-需要\n");

scanf("%d\n", &input);

if(1 == input)

else

phumerh1model->phummermodel->run(phumerh1model->phummermodel);

phumerh1model->deletehumerh1model(phumerh1model);

}

C語言實現《設計模式之禪》之建造者模式

include include include 建造者模式示例,詳細說明及類圖參見設計模式之禪 p106 行為順序陣列 define sequence size 4 define sequence stringlen 15 static unsigned char aucsequence seque...

C語言實現設計模式之單例模式

簡單的單例模式 不考慮多執行緒和release 要是用c 寫,一般這麼寫。include include class object private object object class object object pobject null 單件模式的技巧就在於類的建構函式是乙個私有的函式。但是類的...

設計模式之禪

設計模式之禪 大話面向初學者 禪面向有了一定基礎後提公升能力的讀者 看大話,只是看故事,只是感性認識,對於很多初學者而又沒專案經驗 或 閱讀 編寫量 的人來說,比較適合用於入門 看禪 主要是有一定的專案經驗 或 閱讀 編寫量 基礎上,而又大致閱讀過23種設計模式中的20種以上基本概念後,再深化提公升...