首页 > 编程语言 > 详细

单例模式(singleton)java实现

时间:2021-01-17 19:32:36      阅读:23      评论:0      收藏:0      [点我收藏+]

//20210117
写在前面:刚期末考试完,考了面向对象,里边儿有23个设计模式,我寻思着考完挨个儿实现一下,本文实现单例模式

单例模式概念:

  • 私有化构造器,让一个类只能拥有一个实例化对象,并创建静态方法用以获取该对象

饿汉式

  • 无论是否调用,都先自己创建对象
  • 源代码如下:
/**
 * hunger man mode
 */
public class HungerSingleton {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    private static volatile HungerSingleton hungerSingleton;

    private HungerSingleton(){}

    public static HungerSingleton newInstance(){

        return hungerSingleton;
    }
}

懒汉式

  • 只有在请求的时候才创建对象
  • 程序源代码如下:
/**
 * lazy man mode
 */
public class LazySingleton {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    private static volatile LazySingleton lazySingleton;

    private LazySingleton(){}

    public static LazySingleton newInstance(){
        if(lazySingleton==null){
            lazySingleton = new LazySingleton();
        }
        return lazySingleton;
    }
}

双重加锁式

  • 该模式是饿汉式的线程安全版
  • 程序源代码如下:
public class Singleton_Double_Check {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    private static volatile Singleton_Double_Check singletonDoubleCheck;
    private final static Object lock_ = new Object();
    //私有化构造器
    private Singleton_Double_Check(){

    }

    public static Singleton_Double_Check newInstance(){
        if(singletonDoubleCheck ==null){
            synchronized (lock_){
                if(singletonDoubleCheck ==null){
                    singletonDoubleCheck = new Singleton_Double_Check();
                }
                return singletonDoubleCheck;
            }
        }
        return singletonDoubleCheck;
    }
}

以上
希望对大家有所帮助

单例模式(singleton)java实现

原文:https://www.cnblogs.com/lavender-pansy/p/14288651.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!