一、原理讲解
1.1意图
运用共享技术有效地支持大量细粒度的对象。
1.2应用场景
- 一个程序中使用了大量的对象;
- 完全由于使用大量的对象造成很大的存储开销;
- 对象的大多数状态都可变为外部状态;
- 如果删除对象的外部状态,那么可以用相对较少的共享对象取代很多组对象;
- 应用程序不依赖于对象标识。
1.3结构图(UML图)
1.4代码实现步骤
a1 定义一个抽象接口类IFlyweight,定义一个接口函数operation()用于子类继承;(抽象类)
a2 定义一个实现享元接口类ConcreteFlyweight,重写接口函数operation();(具体构建器)
a3 定义一个工厂类Factory,主要功能是创建和获取享元对象,一次只能获取一个对象;
二、实现代码
Flyweight.cpp
#include <iostream>
#include <map>
#include <string>
using namespace std;
#define DELETE(pointer) delete pointer; pointer=nullptr
class IFlyweight // 抽象接口
{
public:
IFlyweight() {
}
virtual ~IFlyweight() {
}
virtual void operation() = 0;
};
class