Java设计模式《二十二》亨元模式

来源:互联网 发布:淘宝 工具箱 关键词 编辑:程序博客网 时间:2024/04/27 17:12
//亨元模式 运用共享技术有效的大量细粒度的对象(共享对象)//亨元 模式可以避免大量非常相似的开销 共享的对象越多节约的越多//为内部状态增加存储空间public class ConcreteFlyweight extends Flywight{    public void operation(int extrinsicstate){        System.out.prinltn("Concrete Flywight :" + extrinsicstate);    }}//所有具体亨元类的超类或者接口 通过这个接口 Flywight可以接受并作用域外部状态extrinsicstate:Objectpublic abstract class Flywight{    public abstract void operation(int extrinsicstate);}/** * 亨元工厂,用来创建并管理Flyweight对象。它主要是用来确保合理地共享Flyweight,当用户请求一个Flyweight时, * FlyweightFactory对象提供一个已创建的实例或者创建一个 */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());    }    /**     * 根据客户端请求,获取已有对象或生成实例。     * @param key : 根据key来判断是否已生成过此对象     */    public Flyweight getFlyweight(String key){        //也可使用时再实例化        if(!flyweights.containsKey(key))            flyweights.put(key, new ConcreteFlyweight());        return flyweights.get(key);    }}/** * 不需要共享的Flyweight子类。Flyweight使共享成为可能,但它并不强制共享。 */class UnsharedConcreteFlyweight extends Flyweight {    @Override    public void operation(int extrinsicstate) {        System.out.println("Unshared Concrete Flyweight: " + extrinsicstate);    }}/** * 亨元模式,运用共享技术有效地支持大量细粒度的对象。(共享对象) *  * 亨元模式可以避免大量非常相似类的开销。共享的对象越多,节约的越多。 */
0 0