flyweight(享元模式)设计模式

    flyweight设计模式就是享元模式。首先我先举个例子,看下面一段代码:

            public Static void main(String[] arg){
               Integer i1=5;
               Integer i2=5;
               System.out.println(i1=i2);
           }

     输出的结果是什么?true or false?在看下面的一段程序:
            

             public Static void main(String[] arg){
               Integer i1=128;
               Integer i2=128;
               System.out.println(i1=i2);
           }

      输出的结果是什么?true or false?
    
      我可以告诉你,第一段程序输出结果是 true,而第二段程序是 false。

      为什么? Integer 类型的数据范围是 -128 - +127,在这个范围内,jvm是把

  i1和i2认为是同一个对象,但是它们是怎样区分的?
       享元设计模式,很多很小的对象,有很多相同的属性,在jvm中反复出现,就可以

  把它们编成一个对象,把相同的属性编成内部属性,称为内部状态,把不同的属性编成

  外部属性,称为外部状态,把这些外部属性,作为方法的参数传入,这个方法就是用来在

  不同的地方引用这个对象。
        只对上外的例子,Integer类型的数据,jvm认为是频繁出现的,所以运用享元模式

  来处理。

         以上是小弟的学习笔记,如有错误,欢迎指正。
     

你可能感兴趣的:(设计模式,jvm)