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;

        }

      }

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

  • 相关阅读:
    安装Visual Studio的插件AnkhSvn
    从零开始安装 Ambari (1) -- 安装前的准备工作
    centos7 安装 mysql
    hortonworks docker 安装
    Kafka connect
    KONG -- 图形化管理(Kong Dashboard)
    KONG -- 配置 service 并添加 key-auth
    KONG 安装 (在 CentOS 7 中)
    kylin cube 构建过程
    sqoop 安装与命令
  • 原文地址:https://www.cnblogs.com/qadyyj/p/5631961.html
Copyright © 2011-2022 走看看