zoukankan      html  css  js  c++  java
  • 单例模式

    单例模式(5种)

    单例模式 : 一个只有单一对象的类

    1. 饿汉式 空间性能低
      class A{
      private static final A instance = new A();
      public static A newInstance() {
      return instance;
      }
      private A(){}
      }

    2. 懒汉式 时间性能低
      class B{
      private static B instance = null;
      public static synchronized B newInstance() {
      if (instance == null) instance = new B();
      return instance;
      }
      private B() {}
      }

    3. 融合饿汉式和懒汉式的优点
      class C{
      private static class Holder{
      static final C instance = new C();
      }
      public static C newInstance() {
      return Holder.instance;
      }
      private C() {}
      }

    4. 双重检查锁
      public class Singleton {
      private volatile static Singleton singleton;
      public Singleton() {
      }
      public static Singleton getInstance() {
      if (singleton == null) {
      synchronized (Singleton.class) {
      if (singleton == null) {
      singleton = new Singleton();
      }
      }
      }
      return singleton;
      }
      }

    5. 枚举式
      线程安全,调用效率高,但是不能延时加载,但是可以天然的防止反射和反序列化漏洞**
      public enum SingletonDemo4 {
      //这个枚举对象本身就是单例对象
      INSTANCE;
      //添加自己需要的操作
      public void operation(){
      }、
      }

  • 相关阅读:
    MDA模型定义及扩展
    java中 i = i++和 j = i++ 的区别
    nginx+tomcat负载均衡和session复制
    HDU 4010.Query on The Trees 解题报告
    codeforces 165D.Beard Graph 解题报告
    zoj 3209.Treasure Map(DLX精确覆盖)
    hdu 1155 Bungee Jumping
    选择Nginx的理由
    九九乘法表
    K
  • 原文地址:https://www.cnblogs.com/linanana/p/12107361.html
Copyright © 2011-2022 走看看