設計模式flyweight的C 實現原始碼

2021-05-22 12:13:59 字數 1766 閱讀 1711

1、共享元介面類flyweight

#ifndef flyweight_h

#define flyweight_h

class flyweight

;#endif

2、共享元實現類flyweightimpla定義

#ifndef flyweightimpla_h

#define flyweightimpla_h

#include

#include "flyweight.h"

using namespace std;

class flyweightimpla : public flyweight

4、共享元實現類flyweightimplb定義

#ifndef flyweightimplb_h

#define flyweightimplb_h

#include "flyweight.h"

class flyweightimplb : public flyweight

6、共享元預設實現類flyweightimpldefault定義

#ifndef flyweightimpldefault_h

#define flyweightimpldefault_h

#include "flyweight.h"

class flyeweightimpldefault :public flyweight

;#endif

7、共享元預設實現類flyweightimpldefault實現

#include

#include "flyweightimpldefault.h"

flyeweightimpldefault::flyeweightimpldefault()

8、獲取共享元的工廠類flyweightfactory定義

#ifndef flyweightfactory_h

#define flyweightfactory_h

#pragma warning(disable : 4786)

#include

#include

#include "flyweight.h"

using namespace std;

class flyweightfactory

;#endif

9、獲取共享元的工廠類flyweightfactory實現

#include "flyweightfactory.h"

#include "flyweightimpla.h"

#include "flyweightimplb.h"

#include "flyweightimpldefault.h"

typedef pairint_pair;

flyweight* flyweightfactory::getflyweight(string key)

else

return fres;

}flyweight* flyweightfactory::createflyweight(string key)

else if(!stricmp(key.c_str(),cstrb))

else

else

}flymap.insert(int_pair(key,fres));

return fres;

}10、客戶使用類client

#include "flyweight.h"

#include "flyweightfactory.h"

int main()

C 設計模式 八 FlyWeight模式

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

FlyWeight設計模式

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

c 設計模式 享元模式 Flyweight

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