标签:oid 性能 实现 通过 share private 技术 程序 ext
享元模式(Flyweight Pattern)就是通过共享技术实现大量细粒度对象的复用。享元模式是通过细粒度对象的共享,所以也可以说享元模式是一种轻量级模式。按照Gof模式分类,享元模式属于对象结构型模式。
可以共享的内容称为内部状态(Intrinsic State),需要外部环境设置的不能共享的内容称为外部状态(Extrinsic State)。享元模式需要创建一个享元工厂负责维护享元池(Flyweight Pool),享元池用于存储具有相同内部状态的享元对象。
享元模式中共享的仅仅是享元对象,外部状态是需要通过环境类设置的,在实际使用中,能共享的内部状态不是很多的,所以设计享元对象是比较小的,也就是细粒度对象,所以说****享元模式就是通过共享技术实现大量细粒度对象的复用****
创建大量对象会一定程度影响系统性能,不方便程序阅读,使用享元模式可以减少对象使用。
享元模式包括下面角色
Flyweight:抽象享元类
ConcreteFlyweight:具体享元类
UnsharedConcreteFlyweight:非分享具体享元类
FlyweightFactory:享元工厂类
享元模式的核心在享元工厂类,享元工厂类的作用在与维护享元池,需要什么对象,可以从享元池获取
例子来自:《设计模式》一书
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;
}
}
}
享元模式分为单存享元模式和复合享元模式
标签:oid 性能 实现 通过 share private 技术 程序 ext
原文地址:https://www.cnblogs.com/mzq123/p/10224681.html