本文共 901 字,大约阅读时间需要 3 分钟。
单例模式应该是设计模式中最简单的模式了,所以经常被设计模式课程作为入门模式进行讲解。
单例模式本身比较简单,其实也就是一句话,一次只能建一个对象实例,再看看代码示例就更清楚了。
public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } }
但是在实际工作中,尤其在面试中,老有人会问你线程安全的单例怎么写,这一点也需要注意一下。
package com.creational;public class Singleton { private static Singleton instance; private Singleton(){} public static synchronized Singleton getSingleton(){ if(instance == null){ instance = new Singleton(); } return instance; } public void doSomething(){}}
上面举得栗子呢比较简单,当然还要很多其他形式的单例模式,请参考
今天想到一个问题,就是单例模式跟一次只能一个进程(比如安装Microsoft Office,一个安装正在进行中,如果再双击install.exe安装文件,会提示只能启动一个实例)到底有啥关系?
答案是没有卵关系,前者是在单一进程中对象实例的控制,后者呢编程语言本身不提供这样的功能,这个需要操作系统共同配合才可以。
最后还是上一张单例的UML图:
参考文献: