• Singleton模式(单例模式) 饿汉式和懒汉式


    目的:整个应用中有且只有一个实例,所有指向该类型实例的引用都指向这个实例。

    好比一个国家就只有一个皇帝(XXX),此时每个人叫的“皇帝”都是指叫的XXX本人;

    常见单例模式类型:

    饿汉式单例:直接将对象定义出来

    懒汉式单例:只给出变量,并不将其初始化;

    我的总结:

    饿汉式,static修饰,随着类的加载而加载,会损耗性能,但是方法相对简单

    懒汉式  第一次用的时候相对较慢,因为需要加载!线程,不安全!

    package reviewDemo;

    //单例模式

    //饿汉式,直接把对象构造出来

    class SingleDemo{

        private static SingleDemo s1 = new SingleDemo();

        private SingleDemo(){

            //提供私有化的构造方法,那么外界就不能构造对象了!

        }

       

        public static SingleDemo getS1() {

            return s1;

        }

    }

    //懒汉式,先定义,但是不创建对象

    class SingleDemo2{

        private static SingleDemo2 s3 ;

       

        private SingleDemo2(){

            //提供私有化的构造方法,那么外界就不能构造对象了!

        }

       

        public static SingleDemo2 getS3() {//这是一个方法,返回值为创建的对象!

            if(s3 == null){

                s3 = new SingleDemo2();

            }//和饿汉式的区别,此时才来创建对象!

            return s3;

        }

    }

    public class Demo14 {

        public static void main(String[] args) {

            SingleDemo s1 = SingleDemo.getS1();

            SingleDemo s2 = SingleDemo.getS1();

           

            SingleDemo2 s3 = SingleDemo2.getS3();

            SingleDemo2 s4 = SingleDemo2.getS3();

           

            System.out.println(s1 == s2);

            System.out.println(s3 == s4);

           

        }

    }

    输出:true true

    备注:枚举更加安全些

    package reviewDemo;

    enum Stu{

        jake;

        //将构造方法私有化起来,反射也不能创建对象,安全

        private Stu(){

           

        }

    }

    public class Demo15 {

        public static void main(String[] args) {

        }

    }

  • 相关阅读:
    mysql 基础sql语句
    mysql存储引擎概述
    docker命令总结
    python链接postgresql
    Log4.net示例
    postgresql 使用游标笔记
    npm常用命令
    Nginx命令
    Ubuntu命令总结
    NHibernate总结
  • 原文地址:https://www.cnblogs.com/fanweisheng/p/11131558.html
Copyright © 2020-2023  润新知