zoukankan      html  css  js  c++  java
  • 二十三中设计模式之:单例模式

    单例模式通常用于保证系统中一个类只有一个单例。

    单例模式分为三种:懒汉式、饿汉式、双重锁模式

    例1:懒汉式(会产生线程安全问题,需要使用synchronized关键字进行加锁,只有在使用单例模式的时候,实例对象才会被创建)

    public class Singleton{

      //1.构造方法私有化

      private Singleton(){

      }

        //2.声明私有化实例

      private static Singleton singleton = null;

      //3.提供对外的公开的方法

      public synchronized static Singleton getSingleton(){

        if(singleton==null){

          singleton = new Singleton();

          //return singleton;

        }

        return singleton;

      }

    }

    例2:饿汉式(不会产生线程安全问题,但是在程序启动或单例模式类被加载的时候,实例对象就已经被创建。)

      public class Singleton{

        //1.构造方法私有化

        priavte Singleton(){ 

        }

        //2.声明类的实例

        private static Singleton singleton = new Singleton();

        //3.创建公开的方法

        public static Singleton getSingleton(){

          return singleton;

        }    

      }

    例3:双重锁模式

      public class Singleton {

        //1.构造方法私有化

        private Singleton(){

        }

        //2.声明类的实例

        private static Singleton singleton = null;

        //3.创建公开的方法

        public static Singleton getSingleton(){

          synchronized(Singleton.class){

            if(singleton==null){

              singleton = new Singleton();

            }

          }

        return singleton;

        }

      }

    懒汉式和饿汉式的使用场景:当经常使用单例模式的时候,使用饿汉式;不经常使用的时候使用懒汉式。

  • 相关阅读:
    数论练习(5)——青蛙的约会(扩gcd)
    数论练习(4)——同余方程(扩gcd)
    数论练习(3)——相同后三位(快速幂)
    s if标签
    spring获取webapplicationcontext,applicationcontext几种方法详解
    Java精确测量代码运行时间 代码执行时间 纳秒 nanoTime
    java中使用二进制进行权限控制
    hibernate注解配置举例说明
    js日期处理
    Spring 简单而强大的事务管理功能
  • 原文地址:https://www.cnblogs.com/qadyyj/p/5631961.html
Copyright © 2011-2022 走看看