Flyweight (C++实现)
来源:互联网 发布:json.encode 编辑:程序博客网 时间:2024/05/22 04:41
// Flyweight.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
#include <list>
#include <string>
using namespace std;
typedef string STATE;
class Flyweight
{
public:
STATE GetIntrinsicState()
{
return m_state;
}
virtual void Operation(STATE& Extrinsic)=0;
protected:
Flyweight(const STATE& s):m_state(s)
{
}
private:
STATE m_state;
};
class ConcreteFlyweight:public Flyweight
{
public:
ConcreteFlyweight(const STATE& s):Flyweight(s)
{
}
virtual ~ConcreteFlyweight()
{
}
virtual void Operation(STATE& Extrinsic)
{
cout<<"Operation of ConcreteFlyweight"<<endl;
}
};
class FlyweightFactory
{
public:
FlyweightFactory()
{
}
virtual ~FlyweightFactory()
{
list<Flyweight*>::iterator iter,temp;
for(iter= m_listFlyweight.begin();iter!= m_listFlyweight.end();iter++)
{
temp=iter;
++iter;
delete (*temp);
}
}
Flyweight* GetFlyweight(const STATE& key)
{
list<Flyweight*>::iterator iter;
for(iter= m_listFlyweight.begin();iter!= m_listFlyweight.end();iter++)
{
if((*iter)->GetIntrinsicState()==key)
{
cout<<"The Flyweight: /""<<key<<"/" already exists" <<endl;
return (*iter);
}
}
cout<<"Create new instance of ConcreteFlyweight"<<endl;
Flyweight* pFlyweight=new ConcreteFlyweight(key);
m_listFlyweight.push_back(pFlyweight);
return pFlyweight;
}
private:
list<Flyweight*> m_listFlyweight;
};
int _tmain(int argc, _TCHAR* argv[])
{
FlyweightFactory f;
Flyweight* fHello=f.GetFlyweight("Hello");
fHello->Operation(string("%%%%%%"));
Flyweight* fWorld=f.GetFlyweight("World");
fWorld->Operation(string("######"));
Flyweight* p=f.GetFlyweight("Hello");
p->Operation(string("@@@@@@"));
return 0;
}
- Flyweight (C++实现)
- 常见设计模式解析和实现(C++)FlyWeight模式
- 常见设计模式解析和实现(C++)FlyWeight模式
- Design Pattern - Flyweight(C#)
- C++实现Flyweight模式
- 设计模式(c++)笔记之十(Flyweight模式)
- 设计模式实现(二十二)--- 享元模式(Flyweight)
- 实现对象的复用--享元模式(Flyweight)
- 常见设计模式的解析和实现(C++)之十三-FlyWeight模式
- 常见设计模式的解析和实现(C++)之十三-FlyWeight模式
- 常见设计模式的解析和实现(C++)之十三-FlyWeight模式
- 设计模式的解析和实现(C++)之十三-FlyWeight模式
- C++实现Structural - Flyweight模式
- C++实现Structural - Flyweight模式
- Flyweight(享元)
- 享元(Flyweight)
- Flyweight
- Flyweight
- ORA 600 [2252] [3700]
- 分区练习-分区语法
- 断电与ORA-600错误处理
- outofmemoryerror
- shell脚本自动修改linux下ifcfg-ethx文件
- Flyweight (C++实现)
- struts2之ModelDriven
- HDU1102
- 深入探索C++对象模型笔记之六 —— Data语意学
- fsdfsdfdsfsdfsdfsdfds
- Android(十一):ubuntu10.10下Google Map入门
- mysql 查看当前连接数
- innerHTML属性导致未知的运行时错误ie bug
- 我看韩寒-话题2010读后