首页 > 其他 > 详细

享元模式

时间:2014-11-02 12:33:38      阅读:156      评论:0      收藏:0      [点我收藏+]
/**
 * 抽象享元角色
 * @author 
 * @date 2014-10-15
 */
public abstract class FlyWeight {
	/**
	 * 内部状态
	 */
	private String intrinsic;
	
	/**
	 * 外部状态
	 */
	protected final String extrinsic; 
	/**
	 * 构造方法
	 */
	public FlyWeight(String _extrinsic){
		this.extrinsic = _extrinsic;
	}
	
	public abstract void oprater();

	public String getIntrinsic() {
		return intrinsic;
	}

	public void setIntrinsic(String intrinsic) {
		this.intrinsic = intrinsic;
	}
	
	
}
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)){
			System.out.println(extrinsic+"从池容器中取出");
			flyWeight = pool.get(extrinsic);
		}else{
			System.out.println(extrinsic+"放到池容器中");
			flyWeight = new ConcreateFlyWeight(extrinsic);
			pool.put(extrinsic, flyWeight);
		}
		return flyWeight;
	}
	public class ConcreateFlyWeight extends FlyWeight {

	public ConcreateFlyWeight(String _extrinsic) {
		super(_extrinsic);
	}

	@Override
	public void oprater() {
		System.out.println("享元模式2。。。。。。。。。。。");
	}
	}
	public class ConcreateFlyWeight1 extends FlyWeight {

	public ConcreateFlyWeight1(String _extrinsic) {
		super(_extrinsic);
	}

	@Override
	public void oprater() {
		System.out.println("享元模式1。。。。。。。。");	
	}

}


享元模式

原文:http://my.oschina.net/u/586094/blog/339916

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!