享元模式

 享元模式:用共享的技术有效地支持大量的细粒度对象。

享元模式在一般的项目开发中并不常用,而系统底层开发中会用到,常常为了提升系统的性能而使用该模式。

比如:java中的String类就使用了该模式。

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类的实现)


 

      

猜你喜欢

转载自wdt1988520.iteye.com/blog/1978136