首页
首页
沸点
课程
直播
活动
竞赛
商城
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
Kotlin
GitLqr
创建于2021-07-20
订阅专栏
Kotlin快速入门进阶
等 29 人订阅
共32篇文章
创建于2021-07-20
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
Kotlin - 改良装饰者模式
一、前言 装饰者模式 作用:在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。 本质:该模式通过创建一个包装对象,来包裹真实的对象。 核心操作: 创建一个装饰类,包含一个被装饰类的实例
Kotlin - 改良责任链模式
一、前言 责任链模式 作用:避免请求的发送者和接收者之间的耦合关系,将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 举例:OKHttp 的拦截器、Servlet 中的 Fil
Kotlin - 改良迭代器模式
一、前言 迭代器模式 作用:将遍历和实现分离开来,在遍历的同时不需要暴露对象的内部表示 举例:ArrayList、LinkedList、TreeSet 均可通过 iterator() 方法获取到迭代器
Kotlin - 改良策略模式
一、前言 策略模式 作用:让算法的变化独立于使用算法的客户 核心操作:定义了算法族,分别封装起来,让它们之间可以相互替换 二、使用策略模式 例子:游泳运动员的游泳姿势 重点:算法抽离,封装成策略 作为
Kotlin - 改良观察者模式
一、前言 观察者模式 作用:定义了一个一对多的依赖关系,让一个或多个观察者对象监听一个主题对象。这样一来,当被观察者状态发生改变时,需要通知相应的观察者,使这些观察者对象能够自动更新。 核心操作: 观
Kotlin - 改良构建者模式
一、前言 构建者模式 作用:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 核心操作:私有化复杂对象(Product)的类构造器,设计并创建 Builder 类。 二、使用
Kotlin - 改良工厂模式
一、前言 设计模式是软件工程中解决特定问题的一种指南,我们常说 Java 有 23 种设计模式,而多范式的 Kotlin 作为更好的 Java,拥有很多新的语言特性,在使用原本 Java 中常用的设计
Kotlin - 函数式编程
这不就是高阶函数的定义吗?是的,不过,函数式编程是一种编程范式,而高阶函数是函数式编程的基本技术,换句话说:函数式编程包括但不限于高阶函数这一种技术,还有闭包、柯里化、偏函数等等。 闭包就是能够读取其他函数内部变量的函数。对于支持函数式编程的语言来说,可以在一个函数 A 内部再…
Kotlin - 尾递归优化
尾递归就是函数在调用完自己之后没有其他操作的递归,是递归的一种特殊形式。举个例子,"计算斐波那契数列第 n 项"的递归算法有哪些? 这种写法虽然递归调用是在方法的最后一行,但其实这里还有结果相加的操作,并不符合尾递归的定义。 其中,fibIter() 的递归代码在方法的最后一行…
Kotlin - 作用域函数
另外,还有一种经常使用 let 的场景,那就是懒得给变量命名,使用 it 代替。 also 对于执行一些将上下文对象作为参数的操作很有用。对于需要引用对象而不是其属性与函数的操作,或者不想屏蔽来自外部作用域的 this 引用时,请使用 also。 作用:生成一个临时作用域,并在…
Kotlin - 常见高阶函数
forEach高阶函数forEach是可迭代对象的扩展方法,接收函数类型是(T)->Unit的参数action,forEach会将action这个函数作用于可迭代对象中的每个元素,这是源码:根据for
Kotlin - 高阶函数与函数引用
其中 forEach 要求传入一个函数类型为 (T) -> Unit 的函数作为参数(即带一个参数且无返回值),而 filter 则是要求函数类型为 (T) -> Boolean 的函数作为参数(即带一个参数且返回值是 Boolean 类型)。 这里要搞明白什么是函数类型?我们…
Kotlin - 枚举与密封类
所以我们可以知道枚举中的每一个成员,其实都是枚举的一个实例对象,因此枚举会比较占内存;另外,因为 class 默认是 final 的,且构造器是 private 的,所以枚举没有子类,因此枚举是实例可数的。既然枚举是类,那它就可以有构造函数以及成员方法: 枚举:实例可数,没有子…
Kotlin - 内部类
非静态内部类 会持有外部类的引用,而 静态内部类 不会(可以认为两者没有关系)。 非静态内部类 使用时需要基于外部类对象(Outer().Inner()),而 静态内部类 则是基于外部类(Outer.Inner())。 这个匿名内部类既是 TextField 的子类,也是 Te…
Kotlin - 数据类
使用 val (arg1, arg2) in object 这种写法,就可以从 object 对象中提取出 component1() 和 component2() 的返回结果,而且 componentN 方法 的返回值类型是没有限制的。 可见,使用 data class 就无须…
Kotlin - 属性代理
当代理属性被赋值与访问时,就会输出 Delegate 对象 setValue() 和 getValue() 中的日志,从输出的日志可以看出,thisRef 是代理属性的实例对象,property 是代理属性的包装。可见,属性代理相比单纯的属性操作更加强大,在某些场景下,属性值的…
Kotlin - 扩展成员
可以看到扩展方法的格式其实很简单,跟普通的函数差不多,只不过在函数名前面多了 要扩展的类名 和一个 . 而已,扩展方法的方法体中,可以使用 this 得到原本的对象。 在 Python 中,字符串若是乘上整数 n,将返回由 n 个此字符串拼接起来的新字符串。这个语法特性我是挺喜…
Kotlin - 方法重载与默认参数
可以看到这里只是把 say() 和 say(what:String) 使用默认参数整合了,但 say(obj:Any) 还在,其实 say(obj:Any) 的设计是不合理的,因为 String 是 Any 的子类,在调用方法时会有歧义,开发中,最好避免这种写法。
Kotlin - 伴生对象与静态成员
可以发现,Kotlin 中的 companion object 其实对应到 Java 中也就只是 Rectangle 的一个静态内部类实例而已。
Kotlin - 类及成员的可见性
Kotlin 中可见性有 4 个级别:private -> protect -> internal -> public,从左至右可见范围逐渐放宽。 为了方便理解,这里举个例子,一个父亲的零花钱只能自己使用(private),游戏机可以给孩子使用(protected),族谱可以给…
下一页