• SingleTon单例模式总结篇


    在Java设计模式中,单例模式相对来说算是比较简单的一种构建模式。适用的场景在于:对于定义的一个类,在整个应用程序执行期间只有唯一的一个实例对象。

    一,懒汉式:

    其特点是延迟加载,即当需要用到此单一实例的时候,才去初始化此单一实例。

     1 public class SingleTon {
     2 
     3     // 静态实例变量
     4     private static SingleTon instance;
     5 
     6     // 私有化构造函数
     7     private SingleTon() {
     8 
     9     }
    10 
    11     // 静态public方法,向整个应用提供单例获取方式
    12     public static SingleTon getInstance() {
    13         if (instance == null) {
    14             instance = new SingleTon();
    15         }
    16         return instance;
    17     }
    18 
    19 }

    懒汉式线程安全

     1 public class SingleTon {
     2 
     3     // 静态实例变量加上volatile
     4     private static volatile SingleTon instance;
     5 
     6     // 私有化构造函数
     7     private SingleTon() {
     8 
     9     }
    10 
    11     // 双重检查锁
    12     public static SingleTon getInstance() {
    13         if (instance == null) {
    14             synchronized(Singleton.class){
    15                 if(singleton == null){
    16                     instance = new SingleTon();
    17                 }
    18             }
    19         }
    20         return instance;
    21     }
    22 
    23 }

    二,饿汉式:

    饿汉式的特点是应用中尚未需要用到此单一实例的时候即先实例化。

     1 public class SingleTon {
     2 
     3     // 静态实例变量,直接初始化
     4     private static SingleTon instance = new SingleTon();
     5 
     6     // 私有化构造函数
     7     private SingleTon() {
     8 
     9     }
    10 
    11     // 静态public方法,向整个应用提供单例获取方式
    12     public static SingleTon getInstance() {
    13         return instance;
    14     }
    15 
    16 }

    静态内部类单例模式

     1 public class SingleTon {
     2 
     3     // 利用静态内部类特性实现外部类的单例
     4     private static class SingleTonken{
     5         private static SingleTon singleTon = new SingleTon();
     6     }
     7 
     8     // 私有化构造函数
     9     private SingleTon() {
    10 
    11     }
    12 
    13     public static SingleTon getInstance() {
    14         return SingleTonken.singleTon;
    15     }
    16 
    17 }

    静态代码块单例模式

     1 public class SingleToken {       
     2     private static SingleToken singleTon;
     3         //私有化构造函数
     4     private SingleToken(){}
     5         //静态代码块
     6     static{
     7         singleTon = new SingleToken();
     8     }
     9     //获取实例化构造函数
    10     public static SingleToken getInstatce(){
    11         return singleTon;
    12     }
    13     
    14 }

    枚举单例模式

    1 public enum EnumSingleTon {
    2     INSTANCE;
    3     public static EnumSingleTon getInstance(){
    4         return INSTANCE;
    5     }
    6 }
  • 相关阅读:
    .NET Core使用SignalR做登录、推送
    记录node-sass安装失败的解决方法
    .NET Core微服务二:Ocelot API网关
    .NET Core微服务一:Consul服务中心
    ASP.NET Core下Ocelot的简单使用
    ASP.Net Core 发布到IIS Http Error 502.5 官方解决办法
    Windows版Redis主从配置
    IIS 32位/64位 全局模式切换
    NOIP 2007 普及组 初赛 试卷+答案
    P1066 2^k进制数 NOIP 2006 提高组 第四题
  • 原文地址:https://www.cnblogs.com/suruozhong/p/6109561.html
Copyright © 2020-2023  润新知