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
时间: 2024-10-11 00:36:57