享元模式看上去有點玄乎,但是其實也沒有那麼複雜。我們還是用示例說話。比如說,大家在使用電腦的使用應該少不了使用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 說明 當系統中細粒度物件數量太多時,會導致執行代價過高,帶來效能下降等問題。享元模式正是為解決這一類問題而誕生的。在享元模式中通常會出現工廠模式,需要建立乙個享元工廠來負責維護乙個享元池,用於...