• Singleton:单例模式


    单例模式:

    01.在整个应用程序中,一个类只有一个实例对象!

    02.这个实例对象只能通过本类中创建!====》私有构造方法

    03.别人还得使用,通过本类中创建的一个对外访问的接口,来返回本类的实例对象!

    创建单例模式的步骤:

    1.创建静态变量

    2.私有构造

    3.提供对外访问接口

    实现单例模式的3种方式:

    1.懒汉式:

     用户第一次 调用getInstance()的时候,对象的唯一视力才会被创建

     特点:加载类是比较快,但运行时获取对象速度慢,线程不安全

    package com.xdf.bean;
    
    /**
     * 懒汉式:
     * 之后用户第一次 调用getInstance()的时候,对象的唯一实例才会被创建!
     */
    public class Student {
    
        // 1.创建静态变量
        private static Student stu;
    
        // 2.私有化构造
        private Student() {
        }
    
        // 3.提供对外访问的接口
        public static synchronized Student getInstance() {
            if (stu == null) {
                stu = new Student(); // 唯一的对象实例
            }
            return stu;
        }
    
    }

    2.饿汉式   (推荐使用):

    在类装载时候,单例对象就被创建了

    特点:加载类是比较慢,但运行时获取对象的速度快,线程安全

    package com.xdf.bean;
    
    /**
     * 饿汉式:
     * 在类装载的时候,单例对象就被创建了!
     */
    public class Student2 {
    
        // 1.创建静态变量
        private static Student2 stu = new Student2();
    
        // 2.私有化构造
        private Student2() {
        }
    
        // 3.提供对外访问的接口
        public static synchronized Student2 getInstance() {
            return stu;
        }
    
    }

    3.双重校验法:

    package com.xdf.bean;
    
    /**
     * 双重校验锁:
     * 为了保证多线程情况下,单例的正确性!
     */
    public class Student3 {
    
        // 1.创建静态变量
        private static Student3 stu;
    
        // 2.私有化构造
        private Student3() {
        }
    
        // 3.提供对外访问的接口
        public static synchronized Student3 getInstance() {
            if (stu == null) {
                synchronized (Student3.class) {
                    if (stu == null) {
                        stu = new Student3();
                    }
                }
            }
            return stu;
        }
    
    }
  • 相关阅读:
    Django虚拟环境创建问题virtualenvwrapper.sh: There was a problem running the initialization hooks.
    面向对象
    使用python中ssh连接CentOS7上的数据库
    Mysql在python中的使用:pymysql
    Mysql索引原理
    Mysql数据记录操作
    Mysql完整性约束
    Mysql支持的数据类型
    Mysql账户设置_增删改查_表操作
    自己项目列表
  • 原文地址:https://www.cnblogs.com/liutianci/p/8287335.html
Copyright © 2020-2023  润新知