Kotlin 设计模式-工厂
来源:互联网 发布:mac安装win10时蓝屏 编辑:程序博客网 时间:2024/06/15 18:53
Kotlin 设计模式-工厂
前言
Java有很多成熟的设计模式,当然Kotlin是JVM语言,自然对Java原始的设计模式当然可以照搬过来使用,但是毕竟是有大量的语法糖可以使用,所以Kotlin在某些设计模式使用时可以简化代码。
Kotlin工厂模式
Java中简单工厂模式使用if判断或使用 switch case 表达式 进行对象创建分发,在Kotlin则可以使用新增的 when 表达式 来增强Java中工厂模式的一些限制,比如大量的 if else判断,switch case 只能使用数字(1.6及以前)和字符串(1.7及以后增强)。
Kotlin when 表达式
kotlin when 表达式 官方说明
http://kotlinlang.org/docs/reference/control-flow.html#when-expression
when 表达式取代了类C语言中的switch 操作符。
sample
when (x) { 1 -> print("x == 1") 2 -> print("x == 2") else -> { // Note the block print("x is neither 1 nor 2") }}
主要增强的内容有以下几点
- 如果有分支可以用同样的方式处理的话,分支条件可以连在一起:
when (x) { 0,1 -> print("x == 0 or x == 1") else -> print("otherwise")}
- 可以用任意表达式作为分支的条件(不必非得是常量)
when (x) { parseInt(s) -> print("s encode x") else -> print("s does not encode x")}
- 也可以使用in 或 !in检查参数值是否在集合中
when (x) { in 1..10 -> print("x is in the range") in validNumbers -> print("x is valid") !in 10..20 -> print("x is outside the range") else -> print("none of the above")}
- 也可以用 is 或者 !is 来判断值是否是某个类型。注意,由于智能转换,你可以不用额外的检查就可以使用相应的属性或方法。
val hasPrefix = when (x) { is String -> x.startsWith("prefix") else -> false}
- when 也可以用来代替 if-else if 。如果没有任何参数提供,那么分支的条件就是简单的布尔表达式,当条件为真时执行相应的分支
when { x.isOdd() -> print("x is odd") x.isEven() -> print("x is even") else -> print("x is funny")}
Show me a code
interface People { val color: String}class Asian(override val color: String = "Yellow") : Peopleclass Euro (override val color: String = "White") : Peopleenum class Country { Chinese, American, UK, Japanese}class PeopleFactory { fun peopleForCountry(country: Country): People? { when (country) { Country.American, Country.UK -> return Euro() Country.Chinese, Country.Japanese -> return Asian() else -> return null } }}
调用代码如下
val noCurrencyCode = "No Prople color Available"val yellowProple = PeopleFactory().peopleForCountry(Country.Chinese)?.color() ?: noCurrencyCodeprintln("yellowProple color: $yellowProple")val whiteProple = PeopleFactory().peopleForCountry(Country.American)?.color() ?: noCurrencyCodeprintln("whiteProple color: $whiteProple")
阅读全文
0 0
- Kotlin 设计模式-工厂
- Kotlin设计模式
- Kotlin设计模式
- Kotlin设计模式
- Kotlin设计模式
- Kotlin 设计模式-策略
- Kotlin设计模式-状态
- Kotlin 设计模式-命令
- Kotlin 设计模式-访问者
- Kotlin 设计模式-适配器
- Kotlin 设计模式-观察者
- Kotlin设计模式-外观
- 设计模式--工厂设计
- 设计模式------工厂模式
- 设计模式------工厂模式
- 设计模式 [ 工厂模式 ]
- 设计模式--工厂模式
- 设计模式-工厂模式
- TFS更换本地映射路径
- 安装XAMPP登陆localhost出现的问题
- MySQL数据去重--distinct的使用
- Zedboard学习(六):XADC读取数据
- 个人计划整理
- Kotlin 设计模式-工厂
- lintcode--翻转链表
- 机器学习笔记--GMM模型
- 逃离迷宫
- Android实现模拟表单上传
- APP开发步骤
- gradle providedCompile、compile与runtime的使用
- 虚幻4中模型勾边
- bzoj 1690: [Usaco2007 Dec]奶牛的旅行 spfa+二分答案