您的位置:首页 > 编程语言 > Java开发

Java中的享元(flyweight)设计模式

2015-10-23 11:06 239 查看
问题:
如果利用java5自动装配特性定义两个对象:

Integer i1 = 13;
Integer i2 = 13;


那么,这两个对象是不是同一个对象呢?
System.out.print(i1==i2);

结果是true,还是false?

如果这样定义:
Integer i1 = 137;
Integer i2 = 137;

结果又是什么?

答案:第一种定义的结果是true,而第二种的结果则是false。

原因是这样的,如果这个数字在一个字节之内,就是-128~127之间,java会认为这些对象占用资源少,使用的频率可能会很高,所以采用了享元设计模式进行处理。

结论:对于一个小的整数(1个字节内),装箱之后的对象是同一个。

享元设计模式:有很多个小的对象,它们之间有相同的属性,就把这些对象定为一个对象。它们之间相同的属性称为内部状态,而它们之间不相同的属性可以定义为方法的参数, 称之为外部状态。

思考:设计模式不一定很复杂,有时候也会很简单,但它仍然是一种经典的模式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: