一、什么是享元模式?
定义:运用共享技术有效的支持大量细粒度的对象
类型:结构型模式
顺口溜:适装桥组享代外
二、享元模式UML
三、JAVA代码实现
package com.amosli.dp.structural.flyweight;
public abstract class Flyweight {
abstract void operation(int extrinsicstate);
}
package com.amosli.dp.structural.flyweight;
public class ConcreteFlyweight extends Flyweight {
@Override
void operation(int extrinsicstate) {
System.out.println(this.getClass().getName() + extrinsicstate);
}
}
package com.amosli.dp.structural.flyweight;
public class ConcreteFlyweight extends Flyweight {
@Override
void operation(int extrinsicstate) {
System.out.println(this.getClass().getName() + extrinsicstate);
}
}
package com.amosli.dp.structural.flyweight;
import java.util.HashMap;
public class FlyweightFactory {
private HashMap<String, Flyweight> flys = new HashMap<String, Flyweight>();
public FlyweightFactory() {
flys.put("x", new ConcreteFlyweight());
flys.put("y", new ConcreteFlyweight());
flys.put("z", new ConcreteFlyweight());
}
public Flyweight getFlyweight(String key) {
return flys.get(key);
}
}
四、使用场景
1、当我们发现某个类型的对象有大量的实例时,我们是否可以对这些实例进行分类,经过分类后,我们发现只有很少的类别的情况下。
2、我们发现通过使用享元模式后能够提高系统的性能和不会带来更多的复杂度时。
享元模式一般是给出本地内存资源节省的一个方案,并不适合互联网上的分布式应用的情况,不过享元模式对于排他性的要求资源的控制,是个不错的选择的。
五、源码地址
本系列文章源码地址,https://github.com/amosli/dp 欢迎Fork & Star !!