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;

        }

      }

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

  • 相关阅读:
    springMVC接收前端参数的方式
    使用jQuery进行图片分页,每页形成九宫格
    bootstrapTable行样式设置
    BLUEKING----蓝鲸
    Golden Gate 特点及用途
    Linux 如何解决 xhost: unable to open display ""
    LINUX 磁盘如何分区
    ses_cations 值顺序
    简单了解undo
    演示行级排他锁
  • 原文地址:https://www.cnblogs.com/qadyyj/p/5631961.html
Copyright © 2011-2022 走看看