• Java-单例模式


    一、  单例模式:一种常用的软件设计模式。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例

    二、  应用:线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例

    三、  单例模式特点:
          1、单例类只能有一个实例。
          2、单例类必须自己创建自己的唯一实例。
          3、单例类必须给所有其他对象提供这一实例。

    四、单利模式的创建  

    public class Singletn {
        private String name;
        private String id;
        //创建唯一实例
        private static Singletn singletn = new Singletn();
        //对外提供实例
        public static Singletn getInstant() {
            return singletn;
        }
        //构造器私有化
        private Singletn() {
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public void setId(String id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public String getId() {
            return id;
        }
    }
    饿汉式单例模式
    public class Singletn {
        private String name;
        private String id;
        //创建唯一实例
        private static Singletn singletn;
        //对外提供实例
        public static Singletn getInstant() {
            if (singletn == null){//双重检查
                synchronized (Singletn.class){//多线程时,线程安全问题,加锁实现线程同步
                    singletn= new Singletn();
                }
            }
            return singletn;
        }
        //构造器私有化
        private Singletn() {
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public void setId(String id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public String getId() {
            return id;
        }
    }
    懒汉式单例模式

      饿汉式与懒汉式区别:

        1.饿汉式即静态初始化的方式,它是类一加载就实例化的对象,所以要提前占用系统资源

        2.懒汉式类似于延迟加载,在使用的时候实例化,多线程中会有线程安全问题,需要双重检查

      推荐使用饿汉式。

  • 相关阅读:
    基于element-ui图片封装组件
    计算时间间隔具体每一天
    C语言学习笔记 —— 函数作为参数
    AtCoder Beginner Contest 049 题解
    AtCoder Beginner Contest 048 题解
    AtCoder Beginner Contest 047 题解
    AtCoder Beginner Contest 046 题解
    AtCoder Beginner Contest 045 题解
    AtCoder Beginner Contest 044 题解
    AtCoder Beginner Contest 043 题解
  • 原文地址:https://www.cnblogs.com/javaLf/p/8595466.html
Copyright © 2020-2023  润新知