单利模式(Singleton Pattern)理解起来比较简单,指的是保证在类使用过程中,通过类实例化的对象始终只有一个,如果该对象不存在则创建,若存在则使用已存在的,常见的案例是网站的访问统计,当用户访问网站时可以不必每次都往数据库存储,可以先通过单例缓存,然后一定时间再写入数据库。
代码理解定义一个单例模式类
public class SingletonObject { private static SingletonObject instance; private SingletonObject(){}; public static SingletonObject getInstance(){ if (instance == null) { instance = new SingletonObject(); System.out.println("create new instance"); } return instance; } public void showMessage(){ System.out.println("hello world"); } }
调用该对象
public class SingletonPattern { public static void main(String[] args) { SingletonObject singletonObject = SingletonObject.getInstance(); singletonObject.showMessage(); SingletonObject singletonObject1 = SingletonObject.getInstance(); singletonObject1.showMessage(); } }
输出
create new instance hello world hello world
上面这个是线程不安全的,为了考虑线程安全,可以使用synchronized关键字
也就是
public static synchronized SingletonObject getInstance(){...}
或者使用以下方式
public class Singleton { private static Singleton instance = new Singleton(); private Singleton (){} public static Singleton getInstance() { return instance; } }
基于 classloader 机制避免了多线程的同步问题,instance 在类装载时就实例化
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)