结构型模式-----享元模式(Flyweight)
来源:互联网 发布:c语言小写变大写 编辑:程序博客网 时间:2024/03/28 15:57
1、享元模式
运用共享技术有效的知识大量细粒度的对象。
他的主要目的是实现对象的共享,即共享池,当系统中对象多的时候可以减少内存的开销。通常与工厂模式一起使用。
FlyweightFactory负责创建和管理享元单元,当一个客户端请求时,工厂需要检查当前对象池中是否有复合条件的对象,如果有,就返回已经存在的对象,如果没有
则创建一个新对象。
一提到共享池,很容易想到java中的JDBC连接池,适用于做共享的一些对象,同名有一些共有的属性,(如数据库连接池中有:url,driverClassName、username、
password、dbname)将共有的属性作为内部数据(初始化时就指定),其他的作为外部数据(调用对应的属性赋值方法),这样就可以节省空间,减少实例的数量。
实例一
public class ObjectPool {private List<Person> pool = new LinkedList<Person>();public ObjectPool() {for (int i = 0; i < 10; i++) {final Person person = new Person();this.pool.add(person);}}public Person getPerson() {Person person = null;if (this.pool.size() > 0) {person = this.pool.get(0);this.pool.remove(person);System.out.println(" ~~ pool get ~~~");}else {person = new Person();System.out.println(" ~~ new create ~~~~");}return person;}}class Person {private String name;private String pass;public String getName() {return this.name;}public void setName(final String name) {this.name = name;}public String getPass() {return this.pass;}public void setPass(final String pass) {this.pass = pass;}}
模拟调用
public static void main(final String[] args) {final ObjectPool pool = new ObjectPool();for (int i = 0; i < 20; i++) {final Person person = pool.getPerson();person.setName("zhangsan" + i);person.setPass("123&" + i);System.out.println(" person name : " + person.getName() + " person pass : " + person.getPass());}}
- 结构型模式:Flyweight(享元)
- 享元模式Flyweight(结构型)
- 结构型-享元模式(Flyweight)
- 结构型模式-Flyweight ( 享元模式 )
- 结构型模式之享元模式(Flyweight)
- 结构型模式-----享元模式(Flyweight)
- 设计模式--享元模式FlyWeight(结构型)
- 结构型设计模式---享元模式(Flyweight)
- 结构型模式之享元模式(FlyWeight)
- 十九、享元模式Flyweight(结构型模式)
- (结构型模式)FLYWEIGHT——享元模式
- 设计模式-结构型-享元模式(Flyweight)
- 结构型模式之享元模式(FlyWeight)
- 【结构型模式】flyweight(享元)
- 结构型模式之享元FLYWEIGHT
- 结构型模式-享元(flyweight)
- 结构型模6:享元模式(Flyweight Pattern)
- java享元模式(Flyweight)-结构型
- QT中文乱码 国际化
- adb 恢复后启动无法使用问题分析
- 为什么优秀的程序员既懒又笨
- Android中级教程之----Log图文详解(Log.v,Log.d,Log.i,Log.w,Log.e)!
- zoj 1221 Risk
- 结构型模式-----享元模式(Flyweight)
- boost学习
- 2013年hello world高校开源应用设计大赛走进厦门大
- 转~Unity与注册登录服务器交互原理及code
- struts 提供的标签iterator,开发应用常用知识
- 低版本的 opencv库的 vs2010 打开 高版本opencv
- windows7 cocos2d-x 2.1.4 环境搭建(2 创建项目)
- 再谈数据压缩
- android webService 异步访问