享元模式

享元模式:可以提高系统性能的设计模式之一,它的核心思想如果系统中存在多个相同的对象,那么只需要共享一份对象的copy,而没必为每次使用都创建新的对象,一般会与工厂类一同使用,由于创建对象的次数减少对于内存的需求也就较低,对于GC的压力也也有所减少,简单的说,即共享同一个对象

public class Test {
    public static void main(String[] args) {
        Integer i = 2;
        Integer j = 2;
        System.out.println(i==j); //true
        Integer m = 200;
        Integer n = 200;
        System.out.println(m==n); //false
    }
}

对于为啥会出现这种情况,可以查看Integer类中的valueOf方法,实际上Integer 类初始化了一个数组,这个数组包含-128到127的数,当变量小于127时,会直接返回数组中的对象,而不是创建这个对象,当大于127时,便会new 一个对象出来。

这也就解释了上面的输出情况。这里的设计思想也就是用到了享元模式的思想,将小范围但需大量使用的数字先初始化,直接返回需要的对象,这是典型的以时间换取空间的思想

 

posted @ 2018-03-14 10:23  提拉没有米苏  阅读(116)  评论(0编辑  收藏  举报