设计模式 --单例模式
Posted 小明在努力
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式 --单例模式相关的知识,希望对你有一定的参考价值。
//饿汉式: 类加载就创建对象
package Run; class Main { public static void main(String[] args) { Single s = Single.getInstance(); Single ss = Single.getInstance(); System.out.println(s); System.out.println(ss); } } class Single{ static Single s = new Single(); private Single() {} public static Single getInstance() { return s;} }
note:
1.两个对象引用的地址一样,说明来自于同一对象。注意书写getInstance方法时,需要将其静态化,因为外界无法new对象,那么只能通过类来访问。
因为getInstance方法静态了,所以其访问的成员变量s也必须为静态。
2. 饿汉式在开发中更为常用, 因为其线程安全.
3.缺点:类加载就实例化,提前占用了系统资源.
/* * 懒汉模式,类加载还没有对象 * 延迟加载 : delay-load */ class Single { private static Single s = null; private Single() {} public static Single getInstance() { if ( s == null) s = new Single(); return s; } }
note:
1.线程不安全. 个人猜想,多个线程同时访问了getInstance(),导致创建了两个对象,并返回使用,导致对象不唯一.
2.优点: 饿汉式,其实是延迟加载(delay-load),只在第一次使用的时候进行实例化,延缓一时的系统资源紧张.
3.可经修改(同步锁???)更改为线程安全,但是其安全性下降.(Todo:学到多线程学习补充)
4.存在高性能线程安全的懒汉式单例的写法.(Todo:学到多线程学习补充)
以上是关于设计模式 --单例模式的主要内容,如果未能解决你的问题,请参考以下文章