设计模式-享元模式

享元模式(Flyweight):能够避免大量很是类似类的开销。在程序设计中,有时须要生成大量细粒度的类实例来表示数据。若是能发现这些事例除了几个参数外基本相同的,有时就可以大幅度的减小须要实例化的类的数量。java

若是能把哪些参数移到类事例的外面,在方法调用的时候将他们传递进来,就能够经过共享大幅度的减小单个实例的数目ide

package com.fumeck.design.flyweight;

public abstract class FlyWeight {
    private String name;

    public FlyWeight(String name) {
        this.name = name;
    }

    public abstract void excute();
}
package com.fumeck.design.flyweight;

public class ConcreteFlyWeight extends FlyWeight{
    public ConcreteFlyWeight(String name) {
        super(name);
    }

    @Override
    public void excute() {
        //具体事件
    }
}
package com.fumeck.design.flyweight;

import java.util.HashMap;
import java.util.Map;

public class FlyWeightFactory {
    private Map<String, FlyWeight> map = new HashMap();

    public FlyWeight getFlyWeight(String name) {
        FlyWeight flyWeight = map.get(name);
        if (flyWeight != null) {
            return map.get(name);
        } else {
            flyWeight = new ConcreteFlyWeight(name);
            map.put("name", flyWeight);
            return flyWeight;
        }
    }
}
相关文章
相关标签/搜索