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

    1.什么是单例模式

      单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一,这种类型的设计模式属于创建型模式。这种模式涉及到一个单一的类该类负责创建自己的对象,同时确保只有单个对象被创建这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象

    • 1、单例类只能有一个实例
    • 2、单例类必须自己创建自己的唯一实例
    • 3、单例类必须给所有其他对象提供这一实例

    2.优缺点

      优点

        在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例

        避免对资源的多重占用(比如写文件操作)

      缺点

        没有接口,不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化

    3.使用场景

      WEB 中的计数器,不用每次刷新都在数据库里加一次,用单例先缓存起来

      创建的一个对象需要消耗的资源过多,比如 I/O 与数据库的连接

    4.常见单例模式的使用方式

      4.1饿汉式

    public class Singleton {  
        private static Singleton instance = new Singleton();  
        private Singleton (){}  
        public static Singleton getInstance() {  
        return instance;  
        }  
    }

      4.2懒汉式(双检锁/双重校验锁(DCL,即 double-checked locking))

    public class Singleton {  
        private volatile static Singleton singleton;  
        private Singleton (){}  
        public static Singleton getSingleton() {  
        if (singleton == null) {  
            synchronized (Singleton.class) {  
            if (singleton == null) {  
                singleton = new Singleton();  
            }  
            }  
        }  
        return singleton;  
        }  
    }

      4.3静态内部类 

    public class Singleton {  
        private static class SingletonHolder {  
        private static final Singleton INSTANCE = new Singleton();  
        }  
        private Singleton (){}  
        public static final Singleton getInstance() {  
        return SingletonHolder.INSTANCE;  
        }  
    }

      4.4枚举

    public enum Singleton {  
        INSTANCE;  
        public void whateverMethod() {  
        }  
    }
  • 相关阅读:
    【IoT平台北向API调用】使用Postman调用Https接口
    【LiteOS】LiteOS移植常见问题
    搞IT产品,请谨记Mobile First
    Modelarts与无感识别技术生态总结(浅出版)
    高性能Web动画和渲染原理系列(1)——CSS动画和JS动画
    使用蓝图构建Flask项目目录
    一统江湖的大前端(8)- velocity.js 运动的姿势(上)
    只需两步手把手教你玩转图像识别
    秉承初心,砥砺奋进!华为云助力锦江都城开启云服务时代
    HBase 索引创建
  • 原文地址:https://www.cnblogs.com/helloworldmybokeyuan/p/11693674.html
Copyright © 2011-2022 走看看