• 技术文章 >Java >Java入门

    java中什么是单例模式?有哪些优点?

    VV2019-11-25 15:01:23转载1470

    一.什么是单例模式

    单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。单例模式就是: 在程序运行期间, 某些类有且最多只有一个实例对象。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。

    java相关视频教程推荐:java课程

    二.单例模式的实现思路

    1、静态化实例对象, 让实例对象与Class对象互相绑定, 通过Class类对象就可以直接访问;

    2、私有化构造方法, 禁止通过构造方法创建多个实例;

    3、提供一个公共的静态方法, 用来返回这个类的唯一实例。

    三.单例模式的优缺点

    优点:

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

    2、避免对资源的多重占用。

    缺点:

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

    四.单例模式的几种不同写法

    1、懒汉式

    package com.yx.singleton;
     
    /**
     * Singleton
     * <p>初级原型-懒汉式</>
     * <p>优点:用到时再初始化</>
     * <p>缺点:并发下会产生多个实例</>
     * <p>不推荐</>
     *
     * @author yx
     * @date 2019/11/24 12:18
     */
    public class Singleton {
     
        /**
         * 静态化实例对象
         */
        private static Singleton sInstance = null;
     
        /**
         * 私有构造方法
         */
        private Singleton() {
        }
     
        /**
         * 提供一个公共的静态方法, 用来返回这个类的唯一实例.
         *
         * @return 单例对象
         */
        public static Singleton getInstance() {
            if (sInstance == null) {
                sInstance = new Singleton();
            }
            return sInstance;
        }
    }

    上面这种写法,在并发环境下,会出现多个实例,线程不安全。

    枚举方式

    /**
     * EnumSingleton
     * 枚举类单例模式
     *
     * <p>优点:不需要考虑序列化的问题;不需要考虑反射的问题</>
     * <p>缺点:所有的属性都必须在创建时指定, 也就意味着不能延迟加载; 并且使用枚举时占用的内存比静态变量的2倍还多</>
     *
     * @author yx
     * @date 2019/11/24 15:09
     */
    public enum EnumSingleton {
        INSTANCE
    }

    更多相关文章请访问:java入门学习

    以上就是java中什么是单例模式?有哪些优点?的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:CSDN,如有侵犯,请联系admin@php.cn删除
    专题推荐:java 单例模式 优点
    上一篇:对于java反射机制的详细介绍 下一篇:java对象拷贝之深拷贝与浅拷贝
    大前端线上培训班

    相关文章推荐

    • java中的字符串总是出现乱码• java中计算指定日期是一年的第几天的方法• java中怎么实现保存文件到本地• 对于java反射机制的详细介绍

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网