结构型模式-享元

结构图


模式说明

  1. 扩展点在享元接口Flyweight的实现类。
  2. Flyweight的实现由共享和非共享两种,Condition作为外部条件封装,提供给Flyweight操作方法使用参数。
  3. 客户端不需要知道具体使用哪个Flyweight实现,只需要根据key按需取用即可。
  4. 运用享元可有效支持大量细粒度的对象。
客户端
public static void main(String[] args) {
		Condition condition = new Condition();
		FlyweightFactory ff = new FlyweightFactory();
		Flyweight fx = ff.getFlyweight("X");
		fx.operation(condition);
		Flyweight fy = ff.getFlyweight("Y");
		fy.operation(condition);
		Flyweight fz = ff.getFlyweight("Z");
		fz.operation(condition);
		Flyweight uf = new UnsharedConcreteFlyweight();
		uf.operation(condition);
}


类设计
public interface Flyweight {
	public void operation(Condition condition);
}
public class ConcreteFlyweight implements Flyweight {


	@Override
	public void operation(Condition condition) {
		System.out.println("concrete operation:" + condition);
	}


}
public class UnsharedConcreteFlyweight implements Flyweight {


	@Override
	public void operation(Condition condition) {
		System.out.println("unshared concrete operation:" + condition);
	}


}
public class FlyweightFactory {
	private Map<String, Flyweight> flyweights = new HashMap<String, Flyweight>();


	public FlyweightFactory() {
		flyweights.put("X", new ConcreteFlyweight());
		flyweights.put("Y", new ConcreteFlyweight());
		flyweights.put("Z", new ConcreteFlyweight());
	}


	public Flyweight getFlyweight(String key) {
		return flyweights.get(key);
	}


}
public class Condition {


}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值