程序员设计模式

设计模式之享元模式(结构型)

2019-01-05  本文已影响1人  smileNicky

模式定义

享元模式(Flyweight Pattern)就是通过共享技术实现大量细粒度对象的复用。享元模式是通过细粒度对象的共享,所以也可以说享元模式是一种轻量级模式。按照Gof模式分类,享元模式属于对象结构型模式。

模式解释

模式角色

享元模式包括下面角色

享元模式的核心在享元工厂类,享元工厂类的作用在与维护享元池,需要什么对象,可以从享元池获取

典型例子

例子来自:《设计模式》一书

public class Flyweight
{
        //内部状态作为成员属性
    private String intrinsicState;
    
    public Flyweight(String intrinsicState)
    {
        this.intrinsicState = intrinsicState;
    }
    
    public void operation(String extrinsicState)
    {
        ......
    }   
}

public class FlyweightFactory
{
    private HashMap flyweights = new HashMap();
    
    public Flyweight getFlyweight(String key)
    {
        if(flyweights.containsKey(key))
        {
           //享元池有对象,直接获取
            return (Flyweight)flyweights.get(key);
        }
        else
        {
            //创建具体的享元对象,存储在享元池
            Flyweight fw = new ConcreteFlyweight();
            flyweights.put(key,fw);
            return fw;
        }
    }
} 

模式应用

模式分类

享元模式分为单存享元模式和复合享元模式

上一篇 下一篇

猜你喜欢

热点阅读