结构型模式-享元

来源:互联网 发布:网络bng什么意思 编辑:程序博客网 时间:2024/05/18 01:49
结构图


模式说明

  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 {@Overridepublic void operation(Condition condition) {System.out.println("concrete operation:" + condition);}}public class UnsharedConcreteFlyweight implements Flyweight {@Overridepublic 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 {}


0 0
原创粉丝点击