设为首页 加入收藏

TOP

Kotlin设计模式解析之单例
2018-10-08 10:10:07 】 浏览:148
Tags:Kotlin 设计模式 解析 单例

单例模式介绍

单例模式是一个比较简单的设计模式,同时也是挺有意思的一个模式,虽然看起来简单,但是可以玩出各种花样。比如 Java 当中的懒饿汉式单例等。

什么是单例

单例模式的定义:

Ensure a class only has one instance, and provide a global point of access to it.

简单来说,确保某一个类只有一个实例,且自行实例化并向整个系统提供。

单例模式的适用场景

提供一个全局的访问,且只要求一个实例,如应用的配置信息 创建一个对象比较耗费资源,如 数据库连接管理、文件管理、日志管理等 资源共享,如线程池 工具类对象(也可以直接使用静态常量或者静态方法) 要求一个类只能产生两三个实例对象,比如某些场景下,会要求两个版本的网络库实例,如公司内网和外网的网络库实例

单例模式的简单实现

Java 当中实现一个简单的单例:

    public class Singleton {

        private static Singleton sInstance;

        /**
         * 构造方法私有化
         */
        private Singleton() {}

        /**
         * 提供获取唯一实例的方法
         * @return 实例
         */
        public static Singleton getInstance() {
            if (sInstance == null) {
                sInstance = new Singleton();
            }
            return sInstance;
        }

    }

优秀的单例模式设计

上面的单例模式实现简单,但会存在一些问题,比如它并不是一个线程安全的。通常在设计一个优秀的单例会参考以下 3 点:

延迟加载(懒加载) 线程安全 防止反射破坏

Java 中的单例模式回顾

刚才简单实现的单例就是延迟加载,即懒汉式,因为只有在调用getInstance()方法的时候才会去初始化实例,但是,同时也是线程不安全的,原因是在多线程的场景下,假如一个线程执行了if (sInstance == null),而创建对象是需要花费一些时间的,这时另一个线程也进入了if (sInstance == null)里并执行了 代码,这样,就会有两个实例被创建出来,而这显然并不是单例所期望的。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇MySQL 5.7.x无法开启二进制日志的.. 下一篇PLSQL导入导出表的正确步骤解析

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目