微营销网站建设,wordpress设为首页,企业管理系统软件下载,搭建网页整体框架技术摘要
单例模式主要的五种如下#xff1a;
饿汉式懒汉式线程安全的懒汉式双重校验锁式#xff08;Double Check)静态内部类式
一、项目使用单例模式实例场景 app在运行时缓存部分数据#xff0c;作为全局缓存数据#xff0c;以便其他页面及时更新页面对应状态的数据…摘要
单例模式主要的五种如下
饿汉式懒汉式线程安全的懒汉式双重校验锁式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示例 在所有触发退出登录的地方统一使用示例如下 AppRunTimeCacheData.INSTANCE.loginOut()在登录成功后或者获取到个人信息数据时更新缓存数据示例如下 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