版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
享元模式
UML
解释说明
- 享元模式:运用共享技术有效地支持大量细粒度的对象。
- 享元模式可以避免大量非常相似的类的开销,以降低内存的消耗。在程序设计中,有时需要生成大量细粒度的类实例来表示数据。如果这些实例除了几个参数外基本相同,就能够大幅度减少需要实例化的类的数量。把哪些参数参数转移到享元类外,再在需要的时候传递进来。
- 注意:享元模式的使用会给程序带来逻辑的复杂性。
代码实现
- Flyweight.class
package learn22;
public abstract class Flyweight {
public abstract void operation(int extrinsicState);
}
- UnsharedConcreteFlyweight.class
package learn22;
public class UnsharedConcreteFlyweight extends Flyweight {
@Override
public void operation(int extrinsicState) {
System.out.println("执行不共享的UnsharedConcreteFlyweight" + extrinsicState);
}
}
- ConcreteFlyweight.class
package learn22;
public class ConcreteFlyweight extends Flyweight {
@Override
public void operation(int extrinsicState) {
System.out.println("执行ConcreteFlyweight" + extrinsicState);
}
}
- FlyweightFactory.class
package learn22;
import java.util.Hashtable;
public class FlyweightFactory {
private Hashtable flyweights = new Hashtable();
public FlyweightFactory() {
flyweights.put("X", new ConcreteFlyweight());
flyweights.put("Y", new ConcreteFlyweight());
flyweights.put("Z", new ConcreteFlyweight());
}
public Flyweight getFlyweight(String key) {
return (Flyweight) flyweights.get(key);
}
}
- UnsharedConcreteFlyweight.class
package learn22;
public class UnsharedConcreteFlyweight extends Flyweight {
@Override
public void operation(int extrinsicState) {
System.out.println("执行不共享的UnsharedConcreteFlyweight" + extrinsicState);
}
}
参考资料
- 大话设计模式