设计模式之 享元模式 Java

package org.rain.pattern.flyweigt;

import java.util.Vector;

class SmallRainBean {
	String name;
	Integer id;
	String beanData;

	public SmallRainBean(String nameIn, Integer idIn, String beanDataIn) {
		this.beanData = beanDataIn;
		this.id = idIn;
		this.name = nameIn;

	}

	public String getBeanData() {
		return beanData;
	}

	public void setBeanData(String beanData) {
		this.beanData = beanData;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	@Override
	public String toString() {
		return "SmallRainBean [name=" + name + ", id=" + id + ", beanData=" + beanData + "]";
	}
}

/**
 * 通过共享技术来有效的支持大量对象
 */
public class SmallRainFlyweigt {
	private Vector<SmallRainBean> smallrainBeans;
	private int count = 5;
	private int beanSize = 0;

	public SmallRainFlyweigt() {
		smallrainBeans = new Vector<SmallRainBean>(count);
		for (int i = 0; i < count; i++) {
			SmallRainBean bean = new SmallRainBean("对象", i, "对象Data" + i);
			beanSize = beanSize + 1;
			smallrainBeans.add(bean);
		}
	}
	public SmallRainBean popFlyweight() {
		SmallRainBean beanFly = null;
		if (getCount() > 0&&null!=smallrainBeans) {
			beanFly = smallrainBeans.get(0);
			smallrainBeans.remove(beanFly);
			beanSize=beanSize-1;

		}else {
			return null;
		}
		return beanFly;
	}
	public void release(SmallRainBean bean) {
		if (getBeanSize() <count&&null!=smallrainBeans) {
			smallrainBeans.add(bean);
			beanSize=beanSize+1;
		}else {
			System.out.println("bean 超出 容器长度");
		}
	}

	public int getCount() {
		return count;
	}
	public void setCount(int count) {
		this.count = count;
	}


	public int getBeanSize() {
		return beanSize;
	}
	public void setBeanSize(int beanSize) {
		this.beanSize = beanSize;
	}
	public static void main(String[] args) {
		SmallRainFlyweigt smallrainBeans=new SmallRainFlyweigt();
		SmallRainBean beanOne=smallrainBeans.popFlyweight();
		SmallRainBean beanTwo=smallrainBeans.popFlyweight();
		System.out.println(beanOne);
		System.out.println(beanTwo);
		smallrainBeans.release(beanOne);
		smallrainBeans.release(beanTwo);
		System.out.println(smallrainBeans);
		
	}
	@Override
	public String toString() {
		return "SmallRainFlyweigt [smallrainBeans=" + smallrainBeans + ", count=" + count + ", beanSize=" + beanSize
				+ "]";
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值