zoukankan      html  css  js  c++  java
  • 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.懒汉式类似于延迟加载,在使用的时候实例化,多线程中会有线程安全问题,需要双重检查

      推荐使用饿汉式。

  • 相关阅读:
    jquery的get方式发送AJAX请求
    原生JS发送AJAX请求
    正则表达式(二)
    正则表达式(一)
    旅游攻略-北京三日游攻略(已实践)
    边旅游边赚钱的噱头,这是一种传销!
    hdu 1106 排序(水题)
    hdu 1258 Sum It Up(dfs+去重)
    hdu 1455 Sticks(dfs+剪枝)
    解决“LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏”问题
  • 原文地址:https://www.cnblogs.com/javaLf/p/8595466.html
Copyright © 2011-2022 走看看