zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    grep 和vim用法
    【python】初识函数
    【python】 文件相关操作
    【python】基础数据类型相关知识点补充和深浅拷贝
    【python】is和==的区别以及encode()和decode()
    python中的字典以及相关操作
    python列表元祖以及range
    python基本数据类型
    python基础逻辑运算
    了解Python与安装Python解释器
  • 原文地址:https://www.cnblogs.com/suruozhong/p/6109561.html
Copyright © 2011-2022 走看看