23种设计模式之(十二)享元模式(Flyweight)
本文主要介绍23种设计模式之享元模式,附详细python/c++示例代码。
- 概念
- 应用场景
- 注意事项
- 代码示例
- 总结
- 代码链接
享元模式(Flyweight)
概念
享元模式主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式,尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。
GoF对享元模式的定义是:运用共享技术有效地支持大量细粒度的对象。
应用场景
(1)、系统有大量相似对象。
( 2)、需要缓冲池的场景。
代码示例
C++代码示例
/************************************************************************/
/* 设计模式专题
/*
/* 外观模式
/*
/* Author : zzl
/*
/* 编程环境: window10 vs2010
/*
/* Date : 20180916
/************************************************************************/
#include <iostream>
class SubSystemA
{
public:
void doThing()
{
printf("SubSystemA run\n" );
}
};
class SubSystemB
{
public:
void doThing()
{
printf("SubSystemB run\n" );
}
};
class SubSystemC
{
public:
void doThing()
{
printf("SubSystemC run\n" );
}
};
class Facade
{
public:
Facade()
{
sysA = new SubSystemA;
sysB = new SubSystemB;
sysC = new SubSystemC;
}
~Facade()
{
delete sysA;
delete sysB;
delete sysC;
}
public:
void doThing()
{
sysA->doThing();
sysB->doThing();
sysC->doThing();
}
protected:
private:
SubSystemA *sysA;
SubSystemB *sysB;
SubSystemC *sysC;
};
void main()
{
Facade *f = new Facade;
f->doThing();
delete f;
}
python代码示例
# -*- coding: utf-8 -*-
###################################################################
# 设计模式专题
#
# 外观模式
#
# Author : zzl
#
# 编程环境: window10 python2.7
#
# Date : 20180916
##################################################################
class SubSystemA(object):
def do_thing(self):
print("SubSystemA run")
class SubSystemB(object):
def do_thing(self):
print("SubSystemB run")
class SubSystemC(object):
def do_thing(self):
print("SubSystemC run")
class Facade(object):
def __init__(self):
self.sysA = SubSystemA()
self.sysB = SubSystemB()
self.sysC = SubSystemC()
def do_thing(self):
self.sysA.do_thing()
self.sysB.do_thing()
self.sysC.do_thing()
if __name__ == "__main__":
f = Facade()
f.do_thing()