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

2021-07-04 10:07:29 字數 1296 閱讀 4387

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

[cpp]view plain

copy

typedef

struct _font  

font;  

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

[cpp]view plain

copy

typedef

struct _fontfactory  

fontfactory;  

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

[cpp]view plain

copy

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;         

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

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

《設計模式13 享元模式

享元模式是乙個比較好理解的模式,簡單而言,就是共享元素的意思。那共享元素有什麼用?通常這個模式是與工廠模式一起使用。我們知道工廠模式是用於建立物件的,沒呼叫一次就會返回乙個物件。如果我們過多的呼叫呢?每次返回乙個新的物件會導致記憶體占用很多。有時候我們並不需要乙個新的物件,只要獲得之前所建立的物件。...

設計模式(13) 享元模式

概念 享元模式 flyweight pattern 主要用於減少建立物件的數量,以減少記憶體占用和提高效能。這種型別的設計模式屬於結構型模式,它提供了減少物件數量從而改善應用所需的物件結構的方式。主要解決 在有大量物件時,有可能會造成記憶體溢位,我們把其中共同的部分抽象出來,如果有相同的業務請求,直...