设计一个简单的单例~

版权声明:有错误还请斧正,感激不尽。 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 懒汉式
    }
}

线程安全

内容待更新

猜你喜欢

转载自blog.csdn.net/Gentle_Guan/article/details/81367395