设计模式复习-享元模式
生活随笔
收集整理的這篇文章主要介紹了
设计模式复习-享元模式
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
#pragma once
#include "stdafx.h"
#include<map>
#include<set>
#include<string>
#include<iostream>
using namespace std;/*設計模式-享元模式(Flyweight)運用共享技術有效地支持大量細粒度的對象。
*/class CFlyweight {//所有具體享元的超類或接口。通過這個接口,Flyweight可以接受并作用域外部狀態(tài)。
public:virtual void Operation(const int &nExtrinsicstat) = 0;
};class CConcreteFlyweight :public CFlyweight {//為內(nèi)部狀態(tài)增加存儲空間。
public:void Operation(const int &nExtrinsicstate) {cout << "ju ti Flyweight:" << nExtrinsicstate << endl;}
};class CUnsharedconcreteFlyweight :public CFlyweight {
public:void Operation(const int &nExtrinsicstate) {cout << "bu gong xiang de ju ti Flyweight:" << nExtrinsicstate << endl;}
};class CFlweightFactory {//享元工廠,用來創(chuàng)建并管理Flyweight對象。
private:map<string, CFlyweight*>mmpFlyweight;
public:CFlweightFactory() {mmpFlyweight.clear();mmpFlyweight["X"] = new CConcreteFlyweight();mmpFlyweight["Y"] = new CConcreteFlyweight();mmpFlyweight["Z"] = new CConcreteFlyweight();}~CFlweightFactory() {delete mmpFlyweight["X"];delete mmpFlyweight["Y"];delete mmpFlyweight["Z"];}CFlyweight * GetFlyweight(string strKey) {return mmpFlyweight[strKey];}
};int main() {int nExtrinsicstate = 10;CFlweightFactory *pFac = new CFlweightFactory();CFlyweight *pNowFlyweight = pFac->GetFlyweight("X");pNowFlyweight->Operation(--nExtrinsicstate);pNowFlyweight = pFac->GetFlyweight("Y");pNowFlyweight->Operation(--nExtrinsicstate);pNowFlyweight = pFac->GetFlyweight("Z");pNowFlyweight->Operation(--nExtrinsicstate);pNowFlyweight = new CUnsharedconcreteFlyweight();pNowFlyweight->Operation(--nExtrinsicstate);delete pFac, delete pNowFlyweight;getchar();return 0;
}
?
總結
以上是生活随笔為你收集整理的设计模式复习-享元模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设计模式复习-中介者模式
- 下一篇: 设计模式复习-解释器模式