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;

        }

      }

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

  • 相关阅读:
    hadoop 环境配置
    批量生成不同尺寸的图片
    如何生成publish windows app 用到的 pfx 文件
    MVC项目用Windsor注入
    UWP textbox 只能输入数字
    power shell upload file to azure storage
    Checkbox can't checked
    安装部署 Goaccess
    阿里云OSS的Bucket容量大小采集
    1. Nagios和 NagiosQL安装及配置
  • 原文地址:https://www.cnblogs.com/qadyyj/p/5631961.html
Copyright © 2011-2022 走看看