避免创建不必要的对象
核心思想就是,能用一个实例就不要创建两个实例。
这种情况一般是用在重量级的对象上面,比如JDBC连接池,创建一个数据库连接对象是非常损耗性能的一个操作,而且有的数据库对于连接上限也是有限制的,所以为了避免每次连接数据库的时候都要重新创建一个对象,就要维护一个数据库连接池,每次进行连接的时候不是创建新对象,而是重用连接池里面的对象。
又比如String类型的,当我们用new String 来创建的就是全新的对象,String用的非常频繁的情况下,损耗的性能是很大的,所以我们一般创建String类型的时候都是用的字面量常量,它也是维护的一个常量池,当有相同的对象时我们可以重用。
但是他也有他的缺点,维护对象池的成本开销是很大的,并且代码也会变的很杂乱。如果有的对象不经常创建,那么就没必要为他维护对象池了,这样的性能反而损耗的大,所以创建不必要的对象,这些对象的创建开销大,并且创建很频繁的情况下可以将他们进行维护,如果对象是不变类型,那么就干脆将他们做成Singleton的。