package com.cheng.zenofdesignpatterns.patterns.flyweight.common; import java.util.HashMap; /** * 享元工厂 * 构造一个池日容器,同时提供从池中获得对象的方法 */ public class FlyweightFactory { // 定义一个池容器 private static HashMap<String,Flyweight> pool= new HashMap<String,Flyweight>(); // 享元工厂 public static Flyweight getFlyweight(String Extrinsic){ // 需要返回的对象 Flyweight flyweight = null; // 在池中没有改对象 if(pool.containsKey(Extrinsic)){ flyweight = pool.get(Extrinsic); }else{ // 根据外部状态创建享元对象 flyweight = new ConcreteFlyweight1(Extrinsic); // 放置到池中 pool.put(Extrinsic, flyweight); } return flyweight; } }