C 設計模式 八 FlyWeight模式

2021-05-23 09:27:16 字數 429 閱讀 4111

問題:

在物件導向的設計過程中,可能需要建立建立許多物件,而實際上這些物件沒有多大的區別,我們可以建立乙個物件,讓這許多物件共享乙個物件,當然這些物件可能會有些許屬性差異,我們可以通過調整這些屬性來達到我們的要求。這樣的好處是可以避免重複建立物件帶來空間和時間的浪費。

uml:

實現:需要說明的是下面的實現僅僅實現了對可共享物件的使用,非可共享物件的使用沒有列出,因為這個不是flyweight模式的重點.這裡的實現要點是採用乙個vector來儲存這些可以被共享的物件,需要使用的時候就到鍊錶中查詢是不是已經存在了,如果不存在就初始化乙個,然後返回這個物件的指標.

flyweight.h

flyweight.cpp

flyweightfactory.h

flyweightfactory.h

main.cpp

FlyWeight設計模式

先做個比方 乙個停車場有1000輛車子,每輛車子都是乙個物件,每個物件例項占用記憶體0.1m,那麼總共點用100m 如果數量再多些10000,100000.系統記憶體很容易消耗完.我們可以看出這麼車子有很多是相同的,那麼是否可以用共享的方式來減少例項的數量呢?答案是肯定的,於是flyweight方式...

c 設計模式 享元模式 Flyweight

近期總結 最近惰性很強,專案寫的也很差,部落格也沒有按時更新,覺得自己碌碌無為還安慰自己平凡可貴,接下來要好好整理一下最近複習和學到的知識 享元模式 我們每學習一種新的設計模式,首先要明白這個模式可以幹什麼?該如何使用這種設計模式?所謂的享元模式主要是用了減少建立物件的數量,用來減少記憶體的占用和提...

設計模式 享元模式 flyweight

實際上就是通過乙個容器儲存物件,等到需要用的時候,再獲取物件的引用 減少物件數量,節省記憶體空間維護共享物件需要額外開銷,如需要專門設定乙個執行緒來 main public class main abs flyweight public abstract class flyweight imp co...