当前位置: 首页 > news >正文

Kotlin:单例模式(项目使用实例)

摘要

单例模式主要的五种如下:

  • 饿汉式
  • 懒汉式
  • 线程安全的懒汉式
  • 双重校验锁式(Double Check)
  • 静态内部类式

一、项目使用单例模式实例场景

app在运行时缓存部分数据,作为全局缓存数据,以便其他页面及时更新页面对应状态的数据,例如,个人信息、是否显示检测更新弹框等业务逻辑。这时定义一个对象并使用单例模式创建实例。

AppRunTimeCacheData实例代码

class AppRunTimeCacheData {//单例模式(双重校验锁式)companion object {val INSTANCE by lazy { AppRunTimeCacheData() }}var showDownLoadAppDialog: Boolean = true //是否显示下载app弹框var mLoginBean: LoginBean? = null // 用户个人信息/*** 更新用户个人信息数据*/fun setUserData(loginBean: LoginBean) {mLoginBean = loginBean}/*** 退出登录,清空运行时缓存的数据*/fun loginOut() {mLoginBean = null}}

使用AppRunTimeCacheData示例

  1. 在所有触发退出登录的地方统一使用示例如下
    AppRunTimeCacheData.INSTANCE.loginOut()
  2. 在登录成功后或者获取到个人信息数据时更新缓存数据示例如下
    AppRunTimeCacheData.INSTANCE.setUserData(loginBean)

SingletonKT示例代码

class SingletonKT{//饿汉式/*object SingletonKT直接将 SingletonKT 定义为 object*/companion object {//         val INSTANCE = SingletonKT()private var INSTANCE: SingletonKT? = null//懒汉式get() {if (field == null) {field = SingletonKT()}return field}//懒汉式fun get(): SingletonKT {return INSTANCE!!}//线程安全的懒汉式@Synchronizedfun get2(): SingletonKT {return INSTANCE!!}//双重校验锁式(Double Check)val INSTANCE2: SingletonKT by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) {SingletonKT()}//静态内部类式val INSTANCE3 = SingletonKTHolder.holder}private object SingletonKTHolder{val holder = SingletonKT()}
}

使用SingletonKT示例
SingletonKT.INSTANCE
SingletonKT.get()
SingletonKT.get2()
SingletonKT.INSTANCE3

相关文章:

Kotlin:单例模式(项目使用实例)

摘要 单例模式主要的五种如下: 饿汉式懒汉式线程安全的懒汉式双重校验锁式(Double Check)静态内部类式 一、项目使用单例模式实例场景 app在运行时缓存部分数据,作为全局缓存数据,以便其他页面及时更新页面对应状态的数据&…...

vue百度地图的和element输入框/v-region的联动

vue百度地图的使用 第一步:安装插件第二步:main.js中引用第三步:页面中使用 第一步:安装插件 npm install vue-baidu-map --save第二步:main.js中引用 // 百度地图 import BaiduMap from vue-baidu-map Vue.use(Baid…...

搜索+哈希/平衡树,LeetCode 987. 二叉树的垂序遍历

目录 一、题目 1、题目描述 2、接口描述 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 给你二叉树的根结点 root ,请你设计算法计算二叉树的 垂序遍历 序列。 对位于 (row, col) 的每个结点而言,其左右子结…...

蓝桥杯每日一题之内存问题

蓝桥杯真题---内存问题 题目描述: 小蓝最近总喜欢计算自己的代码中定义的变量占用了多少内存空间。 为了简化问题,变量的类型只有以下三种: int:整型变量,一个 int 型变量占用 4 Byte 的内存空间。 long&#xff…...

Django前后端分离之后端实践2

小实践:实现用户登录、注销及ORM管理功能、事务开启小实践 models.py class Books(models.Model):id models.CharField(primary_keyTrue,max_length20,verbose_name"图书ID")name models.CharField(max_length20,verbose_name图书名称)status models…...

windowsserver 2016 PostgreSQL9.6.3-2升级解决其安全漏洞问题

PostgreSQL 身份验证绕过漏洞(CVE-2017-7546) PostgreSQL 输入验证错误漏洞(CVE-2019-10211) PostgreSQL adminpack扩展安全漏洞(CVE-2018-1115) PostgreSQL 输入验证错误漏洞(CVE-2021-32027) PostgreSQL SQL注入漏洞(CVE-2019-10208) PostgreSQL 安全漏洞(CVE-2018-1058) …...

Java实现免税店商城管理系统 JAVA+Vue+SpringBoot+MySQL

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、系统设计2.1 功能模块设计2.2 研究方法 三、系统展示四、核心代码4.1 查询免税种类4.2 查询物品档案4.3 新增顾客4.4 新增消费记录4.5 审核免税 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的免税店商城管理系…...

【Linux】信号

祝大家新年快乐啦!!!新的一年,第一篇文章我们来谈谈Linux中的信号 目录 一、引入 二、系统内置的信号 三、前台进程和后台进程 四、signal函数 五、信号的产生 5.1 通过终端按键产生信号 5.2 调用系统函数向进程发信号 5…...

[NISACTF 2022]easyssrf

它提示我们输入 那我们输入file:///flag file:// 访问本地文件系统 它提醒我们输file:///fl4g 它提醒我们输ha1x1ux1u.php 看到代码stristr($file, “file”)当我们输入file它会提示我们输了 啥意思可以前面加个/ 也可以通过read读取 思路都是前面加/不等于flag绕过 filephp://…...

在Linux系统中设置全局HTTP代理的步骤与技巧

在Linux系统中,设置全局HTTP代理可以方便我们统一管理和控制网络请求。这不仅可以帮助我们加速网络访问,还可以在某些情况下绕过网络限制或实现匿名上网。下面,我将为你详细介绍在Linux系统中设置全局HTTP代理的步骤与技巧。 步骤一&#xf…...

即席查询框架怎么选?

怎么理解即席查询 即席查询(Ad Hoc)是用户根据自己的需求,灵活的选择查询条件,系统能够根据用户的选择生成相应的统计报表。即席查询与普通应用查询最大的不同是普通的应用查询是定制开发的,而即席查询是由用户自定义查…...

【C语言】实现双向链表

目录 (一)头文件 (二) 功能实现 (1)初始化 (2)打印链表 (3) 头插与头删 (4)尾插与尾删 (5)指定位置之后…...

Python操作MySQL基础

除了使用图形化工具以外,我们也可以使用编程语言来执行SQL从而操作数据库。在Python中,使用第三方库: pymysql来完成对MySQL数据库的操作。 安装第三方库pymysql 使用命令行,进入cmd,输入命令pip install pymysql. 创建到MySQL的数据库连接…...

【数学建模】【2024年】【第40届】【MCM/ICM】【E题 财产保险的可持续性】【解题思路】

一、题目 (一) 赛题原文 2024 ICM Problem E: Sustainability of Property Insurance Extreme-weather events are becoming a crisis for property owners and insurers. The world has endured “more than $1 trillion in damages from more than …...

SpringCloud--Eureka注册中心服务搭建注册以及服务发现

注意springboot以及springcloud版本&#xff0c;可能有莫名其妙的错误&#xff0c;这里使用的是springboot-2.6.13&#xff0c;springcloud-2021.0.5 一&#xff0c;Eureka-Server搭建&#xff1a; 1.创建项目&#xff1a;引入依赖 <dependency><groupId>org.sp…...

ansible shell模块 可以用来使用shell 命令 支持管道符 shell 模块和 command 模块的区别

这里写目录标题 说明shell模块用法shell 模块和 command 模块的区别 说明 shell模块可以在远程主机上调用shell解释器运行命令&#xff0c;支持shell的各种功能&#xff0c;例如管道等 shell模块用法 ansible slave -m shell -a cat /etc/passwd | grep root # 可以使用管道…...

qss的使用

参考&#xff1a;qss样式表笔记大全(二)&#xff1a;可设置样式的窗口部件列表&#xff08;上&#xff09;&#xff08;持续更新示例&#xff09;_51CTO博客_qss样式...

archlinux 使用 electron-ssr 代理 socks5

提前下载好 pacman 包 https://github.com/shadowsocksrr/electron-ssr/releases/download/v0.2.7/electron-ssr-0.2.7.pacman 首先要有 yay 和 aur 源&#xff0c;这个可以参考我之前的博客 虚拟机内使用 archinstall 安装 arch linux 2024.01.01 安装依赖 yay 安装的&#…...

macos安装local模式spark

文章目录 配置说明安装hadoop安装Spark测试安装成功 配置说明 Scala - 3.18 Spark - 3.5.0 Hadoop - 3.3.6 安装hadoop 从这里下载相应版本的hadoop下载后解压&#xff0c;配置系统环境变量 > sudo vim /etc/profile添加以下两行 export HADOOP_HOME/Users/collinsliu/…...

机器学习算法之支持向量机(SVM)

SVM恐怕大家即使不熟悉&#xff0c;也听说过这个大名吧&#xff0c;这一节我们就介绍这相爱相杀一段内容。 前言&#xff1a;在介绍一个新内容之SVM前&#xff0c;我们不觉映入眼帘的问题是为什么要引入SVM&#xff1f;吃的香&#xff0c;睡的着的情况下&#xff0c;肯定不会是…...

C++大整数类设计避坑指南:从‘列竖式’加法到内存与效率考量

C大整数类设计避坑指南&#xff1a;从‘列竖式’加法到内存与效率考量 在金融计算、密码学和高精度科学计算领域&#xff0c;处理超出原生数据类型范围的整数是家常便饭。当C开发者第一次尝试实现自己的大整数类时&#xff0c;往往会陷入看似简单实则暗藏玄机的设计陷阱。本文…...

从16QAM到256QAM:用Simulink星座图揭秘高阶调制的抗噪性能

高阶QAM调制的星座图分析与Simulink实战指南 在5G和Wi-Fi 6时代&#xff0c;256QAM已成为提升频谱效率的关键技术。但当我们从实验室的理想环境走向真实无线场景时&#xff0c;工程师们常面临一个核心矛盾&#xff1a;如何在频谱效率与系统稳定性之间找到最佳平衡点&#xff1…...

lychee-rerank-mm快速上手:3步完成图库重排序(输入描述→上传图片→点击排序)

lychee-rerank-mm快速上手&#xff1a;3步完成图库重排序&#xff08;输入描述→上传图片→点击排序&#xff09; 1. 项目简介 lychee-rerank-mm是一个专门为RTX 4090显卡优化的智能图片排序工具。它能帮你从一堆图片中快速找出与文字描述最匹配的那些图片&#xff0c;就像有…...

Waymo Sim Agents模拟代理:多智能体交互建模实战指南

Waymo Sim Agents模拟代理&#xff1a;多智能体交互建模实战指南 【免费下载链接】waymo-open-dataset Waymo Open Dataset 项目地址: https://gitcode.com/gh_mirrors/wa/waymo-open-dataset Waymo Sim Agents模拟代理是Waymo开放数据集中的重要组成部分&#xff0c;专…...

Yuzu模拟器版本高效管理实战指南:从新手到专家的避坑技巧

Yuzu模拟器版本高效管理实战指南&#xff1a;从新手到专家的避坑技巧 【免费下载链接】yuzu-downloads 项目地址: https://gitcode.com/GitHub_Trending/yu/yuzu-downloads 你是否曾遇到这样的困境&#xff1a;刚更新的Yuzu模拟器让原本流畅的游戏变得卡顿&#xff0c;…...

知识图谱入门第一步:用SpringBoot+HanLP快速构建你的中文实体识别与关系抽取Demo

知识图谱实战&#xff1a;基于SpringBoot与HanLP的中文实体关系抽取系统构建指南 在人工智能与大数据技术蓬勃发展的今天&#xff0c;知识图谱作为结构化知识的重要载体&#xff0c;正在智能搜索、推荐系统、金融风控等领域展现出巨大价值。但对于许多刚接触这一领域的开发者而…...

Xilinx ZYNQ/MPSOC开发者必看:如何为你的PetaLinux 2022.1工程搭建一个高效的本地缓存服务器(sstate downloads)

Xilinx ZYNQ/MPSOC团队开发实战&#xff1a;构建企业级PetaLinux缓存服务器集群 当五个工程师同时对着公司服务器发起全量编译时&#xff0c;机房里传出的风扇轰鸣声总让我想起波音747起飞——这是我们去年某个ZYNQ UltraScale项目的日常。直到我们在本地部署了分布式sstate缓存…...

PHP反序列化实战:手把手教你绕过CTF题中的字符检查与属性保护

PHP反序列化漏洞实战&#xff1a;从CTF解题到真实场景防御 在网络安全竞赛中&#xff0c;PHP反序列化漏洞一直是高频考点。这类漏洞不仅存在于CTF比赛中&#xff0c;也广泛存在于真实世界的Web应用中。本文将从一个典型CTF题目入手&#xff0c;深入剖析PHP反序列化的攻击手法与…...

DS1202示波器功能详解与实战操作指南

1. DS1202示波器核心功能解析 第一次拿到DS1202示波器时&#xff0c;面对密密麻麻的按键和接口确实有点懵。但用久了就会发现&#xff0c;它的设计其实非常人性化。咱们先从最常用的垂直控制区说起——这是调节波形高低胖瘦的关键区域。 垂直位移按键就像给波形装了个电梯&…...

信号完整性工程师必看:S参数实战解析与常见误区(附VNA实测案例)

信号完整性工程师必看&#xff1a;S参数实战解析与常见误区&#xff08;附VNA实测案例&#xff09; 在高速数字电路设计中&#xff0c;信号完整性&#xff08;SI&#xff09;问题往往成为工程师的"隐形杀手"。随着信号速率突破10Gbps&#xff0c;PCB走线不再只是简单…...