java-设计模式(结构型)-【享元模式】

1.享元模式(Flyweight)

定义:享元模式的主要目的是实现对象的共享即共享池,当系统中对象多的时候可以减少内存的开销,通常与工厂模式一起使用。

  1.1 工厂

//工厂:内置一个池,如果存在了则取出,否则则创建加入池中
public class FactoryPool {

	private Hashtable<String,Person> pool=new Hashtable<String,Person>();
	public Person getPerson(String name)
	{
		  //先从池中将人取出,没有则创建一个放入池中
		  Person p=pool.get(name);
		  if(p==null)
		  {
			  //创建并加入池中
			  System.out.println("工厂新建一个人:"+name);
			  p=new Person(name);
			  pool.put(name, p);
		  }
		  System.out.println("返回一个人:"+name);
		  return p;
	}	
}
class Person
{
	private String name;
	public Person (String name)
	{
		this.name=name; 
	}
}

  1.2 测试

public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
        FactoryPool  f=new FactoryPool();
        //从工厂中取人
        Person p2=f.getPerson("hq");
        Person p3=f.getPerson("cyx");
        Person p1=f.getPerson("hq");
	}
}

  1.3 运行结果

工厂新建一个人:hq
返回一个人:hq
工厂新建一个人:cyx
返回一个人:cyx
返回一个人:hq

  

 

posted @ 2015-04-17 14:02  beyondbycyx  阅读(140)  评论(0编辑  收藏  举报