单例模式(Singleton):保证一个类仅有一个实例,并提供一个访问它的全局访问点
UML:
JAVA:
public class SingletonTest {
public static void main(String[] args) {
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
System.out.println(s1.equals(s2));
}
}
class Singleton{
private static Singleton instance;
private Singleton(){}//private构造方法,堵死外界利用new创建实例对象
public static Singleton getInstance(){
if (instance == null) instance = new Singleton();
return instance;
}
}
//多线程时的单例
class SingletonThread{
private static SingletonThread instance;
private SingletonThread(){}
public static SingletonThread getInstance(){
if (instance == null){
synchronized (Singleton.class){
if (instance == null) {
instance = new SingletonThread();
}
}
}
return instance;
}
}
//静态内部类单例
class Singleton2{
private static class Inner{
private static final Singleton2 singleton2 = new Singleton2();
}
private Singleton2() {}
public static final Singleton2 getInstance(){
return Inner.singleton2;
}
}