?享元模式:用共享的技术有效地支持大量的细粒度对象。
享元模式在一般的项目开发中并不常用,而系统底层开发中会用到,常常为了提升系统的性能而使用该模式。
比如:java中的String类就使用了该模式。
class="java">main(){ String a="abc"; String b="abc"; System.out.println(a==b); } //返回结构为true,a和b引用的同一个常量池中“abc”。
?
?享元模式两种实现方式:1、单纯享元 ? 2、复合享元
?
?下面简单介绍一下:单纯享元。 ?复合享元就不加以介绍了,复合享元和原型模式的复合方式是一样的,其实就是增加以了一个对象管理器。
?
? 单纯享元:
? ??
?
public interface Flyweight{ void operation(); } //具体实现 public class ConcreteFlyweight implements Flyweight{ Character intrinsicState; public ConcreateFlyweight(Character state){ this.intrinsicState=state; } public void operation(String msg){ System.out.println(msg); } } //工厂 public class FlyweightFactory{ private Map<Character,Flyweight> objects=new HashMap<Character,Flyweight>(); public Flyweight factory(Character state){ Flyweight fly=objects.get(state); if(fly==null){ fly=new ConreteFlyweight(state); objects.put(state,fly); } rettrun fly; } }
使用场景:1、线程池
? ? ? ? ? ? ? ? ? 2、java集合中的对象就是使用享元,在通过视图技术返回一个接口对实际对象进行操作。
? ? ? ? ? ? ? ? ? ? ?(关于视图技术可以查看:Collections类的实现)
?
?
?
? ? ??
?
?