浅谈kotlin解析之设计模式

1157760522ch 1157760522ch     2023-05-07     560

关键词:

一、前言

设计模式是我们Android成长之路必备的一项技能,相信很多同学都已经Get了,现在让我们来看看在Kotlin中设计模式是如何表达的呢。

二、单例模式

单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例 。

使用场景: 确保某个类有且只有一个对象的场景,避免产生多个对象消耗过多的资源

  • Java单例模式回顾
  • 懒汉式:


    技术图片

饿汉式:

技术图片


Kotlin单例模式写法

技术图片

 

kotlin写法是不是简单直接越看越喜欢,一句话就概括了。

来看一下官方的说明

 

技术图片

 

在 Kotlin 当中直接通过关键字 object 声明一个单例,并且它是线程安全的,并且object 声明的方式也是延迟加载的。

三、代理模式(委托模式)

代理模式是为其他对象提供一种代理以控制对这个对象的访问

代理模式是使用一个代理对象来访问目标对象的行为,Kotlin 下的实现与 Java 基本类似

抽象类

技术图片


被代理类

技术图片

 

技术图片

 

技术图片


代理类

技术图片


调用

技术图片


通过代理模式可以把复杂的判断和生成通知的逻辑都屏蔽了,让代码更加清晰

 

四、建造者模式

建造者模式是将一个复杂对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示

比如我们常用的 AlertDialog 、universal-image-loader就是使用的建造者模式,让我们看看kotlin中该怎么表达

技术图片

 

技术图片


使用方法与Java一样

技术图片


其实Kotlin 的 apply 扩展原生也支持 Builder 模式

技术图片

 

技术图片

 

五、观察者模式

观察者模式是定义对象间的一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新

常见的观察者模式如RecyclerView的Adapter的notifyDataSetChanged更新方法、BroadcastReceiver、开源库EventBus、RxJava等等

Kotlin的写法与Java类似

通过UnReadMessageObserver 单例来实现全局观察管理未读消息

技术图片


被观察者

技术图片


观察者

技术图片

 

观察者模式是我们经常使用的模式,它的一个重要作用就是解耦,将观察者个被观察者解耦

六、适配器模式

1.适配器模式把一种接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作
2.举个栗子:手机普通充电需要5V的电压,而生活用电电压是220V,而我们的充电器就充当了转换适配的作用,
3.这里的适配器也是一个道理
4.适配器模式中的目标接口也就是 5V电压的接口

 

技术图片


适配器模式中需要被适配的接口,日常220V电压

技术图片


适配器

技术图片

 

以上就是适配器模式在Kotlin上的简单实现了,适配器模式的原理在于把原本不兼容的接口融合在了一起,使之能更好的协作。

总结

以上几种设计模式是我们经常会用到的,Kotlin的大多设计模式基本与Java实现大致相同,灵活的使用设计模式能让我们代码更加的灵活,便于管理。

关于我

更多信息可以点击关于我 , 非常希望和大家一起交流 , 共同进步
 目前是一名程序员,不仅分享 Android开发相关知识,同时还分享技术人成长历程,包括个人总结,职场经验,面试经验等,希望能让你少走一点弯路。

浅谈js设计模式之发布—命令模式

命令模式最常见的应用场景是:有时候需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是什么。此时希望用一种松耦合的方式来设计程序,使得请求发送者和请求接收者能够消除彼此之间的耦... 查看详情

浅谈-java设计模式之动态代理

动态代理模式(DynamicProxyPattern):在java的动态代理机制中,有两个重要的类或接口,一个是InvocationHandler(Interface)、另一个则是Proxy(Class),这一个类和接口是实现我们动态代理所必须用到的。首先我们先来看看java的API帮助文档是... 查看详情

浅谈架构模式之解释器模式

浅谈架构模式之解释器模式1定义给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。·文法:即语法规则。在解释器模式中每一个语法都将对应一个解释器对象,用来处理... 查看详情

浅谈kotlin:类

浅谈Kotlin(一):简介及AndroidStudio中配置浅谈Kotlin(二):基本类型、基本语法、代码风格 前言:  已经学习了前两篇文章,对Kotlin有了一个基本的认识,往后的文章开始深入介绍Kotlin的实战使用。  本篇介绍Kotlin中... 查看详情

面型对象之设计模式(浅谈)

...面向对象这一篇,最重要的就是理清思路,理解一下各个设计模式的机理以及优缺点。  在学习之初,首先要明白一点,为何要学习JS的各种设计模式?这个问题要归咎于JS本身了,JS本身并没有“类”的概念(这里不考虑ES6)... 查看详情

浅谈设计模式之创建型模式

v-model的原理我们在vue项目中主要使用v-model指令在表单input、textarea、select等元素上创建双向数据绑定,我们知道v-model本质上不过是语法糖,v-model在内部为不同的输入元素使用不同的属性并抛出不同的事件:? text和textarea元素使... 查看详情

设计模式之策略模式浅谈以及简单例子(代码片段)

...sp;            设计模式之策略模式 策略模式定义了算法类,分别封装起来,让他们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。 策略模式是对算法的包装,... 查看详情

菜鸟之路-浅谈设计模式之工厂模式

工厂模式工厂模式是我们最经常使用的实例化对象模式了,是用工厂方法取代new操作的一种模式。著名的Jive论坛,就大量使用了工厂模式,工厂模式在Java程序系统能够说是随处可见。由于工厂模式就相当于创建实例对象的new。我... 查看详情

设计模式之——浅谈strategy模式(策略模式)

strategy模式,即策略模式。个人觉得吧,策略模式更多的是一种思维方式。首先我们要知道,为什么需要策略模式。举个例子,比如用程序输出今天下午去玩什么。PlayGame玩游戏packagesite.wangxin520.gof.strategy.demo;/***玩游戏的类*@author... 查看详情

spring源码分析之浅谈设计模式

一直想专门写个Spring源码的博客,工作了,可以全身性的投入到互联网行业中。虽然加班很严重,但是依然很开心。趁着凌晨有时间,总结总结。首先spring,相信大家都很熟悉了。  1、轻量级 零配置,API使用简单 ... 查看详情

当kotlin邂逅设计模式之代理模式(代码片段)

简述:从这篇文章起,我们将继续Kotlin邂逅设计模式系列篇中的第二篇代理模式。代理模式可以说很多初级中级开发者迷惑的设计模式。但是它确实应用很广,不用多说大家非常熟悉的Retrofit框架,内部使用了动态代理... 查看详情

菜鸟之路-浅谈设计模式之单例设计模式

单例设计模式定义:确保一个类仅仅有一个实例。并且自行实例化并向整个系统提供这个实例。单例模式是一种经常使用的软件设计模式。在它的核心结构中仅仅包括一个被称为单例的特殊类。通过单例模式能够保证系统中一个... 查看详情

浅谈设计模式之工厂类模式由简单到复杂的演变

前言  在软件设计过程中,我们总是需要创建很多对象,而且系统越庞大,创建的对象越复杂。而今天我们将讨论的就是解决对象创建时的难题--工厂类模式。为了贴近工厂这个词,我们采用工厂建造汽车这个例子来阐明工厂... 查看详情

浅谈kotlin:基本类型基本语法代码风格

浅谈Kotlin(一):简介及AndroidStudio中配置 通过上面的文章,在AndroidStudio中我们已经可以进行Kotlin编程了,接下来开始学习Kotlin的基本类型及语法。 一、基本类型  在Kotlin中,所有变量的成员方法和属性都是一个对象... 查看详情

kotlin语言深入解析

课程介绍:在2017年的GoogleI/O大会上,Google正式宣布Kotlin将成为Android开发的官方支持语言。一时间,关于Kotlin的相关介绍如雨后春笋般涌现出来,Kotlin也很快成为近几个月来最为火热的开发语言之一。但值得一提的是,Kotlin出现至... 查看详情

网站搭建建站项目之网站代码网页设计开发的个人分析浅谈(代码片段)

用我多年的搭建BC网站建站的经验来为大家浅谈分析下网站前端代码的设计开发意义和功能。大家都知道搭建一个网站从窗口意义上来说就是分为前端客户打开界面和运营商后台打开页面,前端主要展现的是客户的操作页,侧重... 查看详情

hybrid容器设计之第三方网站

...API释放接上文:(阅读本文前,建议阅读前三篇文章先)浅谈Hybrid技术的设计与实现浅谈Hybrid技术的设计与实现第二弹浅谈Hybrid技术的设计与实现第三弹——落地篇之前设计Hybrid整块交互的时候,受众都是自己的团队,没... 查看详情

浅谈dsn域名解析

功能:将域名转为IP工作模式:一般接受到请求后,先会到浏览器上查询缓存,如果没有就在本地的操作系统查询缓存,接着就是hosts文件,LDNS,一级二级三级域名,层层往上,最后才是根。名次解释:.代表根域名,.com这种是... 查看详情