单例设计模式
所谓单例设计模式指的是一个类只允许产生一个一个实例化对象
单例设计模式有两种:饿汉式和懒汉式,所谓饿汉式,就是直接创建出类的实例化;而懒汉式,是在需要的时候再创建类的实例化。
饿汉式
优点: 只在类加载的时候创建一次实例,不会存在多个线程创建多个实例的情况,避免了多线程同步的问题。
缺点:很明显,即使这个单例没有用到也会被创建,而且在类加载之后就被创建,内存就被浪费了。
class Singleton{
private static Singleton instance = new Singleton();
private Singleton(){
}
public static Singleton getInstance(){
return instance;
}
public void print(){
System.out.println("Hello World");
}
}
public class SingletonTest{
public static void main(String[] args) {
Singleton singleton = null;
singleton = Singleton.getInstance();
singleton.print();
}
}
**懒汉式:**线程不安全的单例模式
实现一个线程安全的懒汉式单例模式,代码如下:
class Singleton {
private static Singleton singleton;
private Singleton() {
System.out.println("Singleton.init()");
}
public static Singleton getInstance() {
if(singleton == null) {
singleton = new Singleton();
}
return singleton;
}
public void fun(){
System.out.println("Singleton.fun()");
}
}
给大家分享一个面试题
用静态内部类实现一个单例模式
代码如下
class MySingleton {
private MySingleton() {
}
private static class Single {
public static MySingleton mySingleton = new MySingleton();
}
public static MySingleton getInstance() {
return Single.mySingleton;
}
}