享元模式看上去有點玄乎,但是其實也沒有那麼複雜。我們還是用示例說話。比如說,大家在使用電腦的使用應該少不了使用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 主要用於減少建立物件的數量,以減少記憶體占用和提高效能。這種型別的設計模式屬於結構型模式,它提供了減少物件數量從而改善應用所需的物件結構的方式。主要解決 在有大量物件時,有可能會造成記憶體溢位,我們把其中共同的部分抽象出來,如果有相同的業務請求,直...