zoukankan      html  css  js  c++  java
  • 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) {

        }

    }

  • 相关阅读:
    RabbitMq的死信队列和延迟队列
    Rabbitmq的过期时间
    技术干货 | 源码解析 Github 上 14.1k Star 的 RocketMQ
    深入分析 Flutter 渲染性能
    重磅发布 阿里云数据中台全新产品DataTrust聚焦企业数据安全保障
    DataWorks搬站方案:Airflow作业迁移至DataWorks
    DataWorks搬站方案:Azkaban作业迁移至DataWorks
    基于 Flutter 的 Web 渲染引擎「北海」正式开源!
    走完线上 BUG 定位最后一公里
    10种编程语言实现Y组合子
  • 原文地址:https://www.cnblogs.com/fanweisheng/p/11131558.html
Copyright © 2011-2022 走看看