享元模式_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 享元模式

享元模式

 2013/11/20 18:35:43  wdt1988520  程序员俱乐部  我要评论(0)
  • 摘要:享元模式:用共享的技术有效地支持大量的细粒度对象。享元模式在一般的项目开发中并不常用,而系统底层开发中会用到,常常为了提升系统的性能而使用该模式。比如:java中的String类就使用了该模式。main(){Stringa="abc";Stringb="abc";System.out.println(a==b);}//返回结构为true,a和b引用的同一个常量池中“abc”。享元模式两种实现方式:1、单纯享元2
  • 标签:模式

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

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

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

?

?


?

? ? ??

?

?

  • 大小: 28.9 KB
  • 查看图片附件
发表评论
用户名: 匿名