版权声明:有错误还请斧正,感激不尽。 https://blog.csdn.net/Gentle_Guan/article/details/81367395
什么是单例?
通俗的解释:一个类只允许有一个对象,且作为全局的访问点提供使用;
Java实现
饿汉式
//所谓饿汉式,就是先创建一个私有对象,等着被使用;
//饿汉式是线程安全的
class Singleton{
//创建私有对象
private static Singleton singleton = new Singleton();
//私有化构造函数,以实现单例
private Singleton(){}
//静态修饰 类名调用
public static Singleton getSingleton() {
return singleton;
}
public void test(){
System.out.println("this is 饿汉式");
}
}
懒汉式
//懒汉式 用到了才实例对象
//这种写法线程不安全
class Singleton_{
private static Singleton_ singleton_ = null;
private Singleton_(){}
//唯一的区别就是:当调用getSingleton的时候懒汉式才实例这个对象
public static Singleton_ getSingleton_() {
if(singleton_ == null){
singleton_ = new Singleton_();
}
return singleton_;
}
public void test(){
System.out.println("this is 懒汉式");
}
}
简单测试
public class Test{
public static void main(String[] args) {
//只能用get的方法来获取对象,因为构造函数是私有的,这也是单例的设计模式规定的
Singleton singleton = Singleton.getSingleton();
singleton.test();//this is 饿汉式
Singleton_ singleton_ = Singleton_.getSingleton_();
singleton_.test();//this is 懒汉式
}
}
线程安全
内容待更新