C語言和設計模式(享元模式)

2021-06-02 17:11:25 字數 1141 閱讀 5482

享元模式看上去有點玄乎,但是其實也沒有那麼複雜。我們還是用示例說話。比如說,大家在使用電腦的使用應該少不了使用word軟體。使用word呢, 那就少不了設定模板。什麼模板呢,比如說標題的模板,正文的模板等等。這些模板呢,又包括很多的內容。哪些方面呢,比如說字型、標號、字距、行距、大小等等。

typedef struct _font

font;

上面的font表示了各種font的模板形式。所以,下面的方法就是定製乙個fontfactory的結構。

typedef struct _fontfactory

fontfactory;

這裡的getfont即使對當前的font進行判斷,如果font存在,那麼返回;否則建立乙個新的font模式。

font* getfont(struct _fontfactory* pfontfactory, int type, int sequence, int gap, int linedistance)

pfont = (font*)malloc(sizeof(font));

assert(null != pfont);

pfont->type = type;

pfont->sequence = sequence;

pfont->gap = gap;

pfont->linedistance = linedistance;

if(pfontfactory-> number < pfontfactory->size)

ppfont = (font**)malloc(sizeof(font*) * pfontfactory->size * 2);

assert(null != ppfont);

memmove(ppfont, pfontfacoty->ppfont, pfontfactory->size);

free(pfontfactory->ppfont);

pfontfactory->size *= 2;

pfontfactory->number ++;

ppfontfactory->ppfont = ppfont;

return pfont;

}

13 C語言和設計模式(享元模式)

享元模式看上去有點玄乎,但是其實也沒有那麼複雜。我們還是用示例說話。比如說,大家在使用電腦的使用應該少不了使用word軟體。使用word呢,那就少不了設定模板。什麼模板呢,比如說標題的模板,正文的模板等等。這些模板呢,又包括很多的內容。哪些方面呢,比如說字型 標號 字距 行距 大小等等。cpp vi...

c 設計模式(享元模式)

good 運用共享技術有效地支援大量細粒度的物件 對於c 來說就是共用乙個記憶體塊啦,物件指標指向同乙個地方 如果乙個應用程式使用了大量的物件,而這些物件造成了很大的儲存開銷就應該考慮使用。還有就是物件的大多數狀態可以外部狀態,如果刪除物件的外部狀態,那麼可以用較少的共享物件取代多組物件,此時可以考...

C 設計模式 享元模式

ifndef flyweight h define flyweight h include include 說明 當系統中細粒度物件數量太多時,會導致執行代價過高,帶來效能下降等問題。享元模式正是為解決這一類問題而誕生的。在享元模式中通常會出現工廠模式,需要建立乙個享元工廠來負責維護乙個享元池,用於...