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认为是频繁出现的,所以运用享元模式
来处理。
以上是小弟的学习笔记,如有错误,欢迎指正。