Kotlin特色风格实现gof设计模式

虽然设计模式偏重于思想层面,但是不同的编程语言有着其独特的语法展现,这使得在某个特定语言内,可能会更灵活和更有张力的实现某些设计模式。同时,对于kotlin来说,由于其完全兼容Java,若是只是谈设计模式的实现的话,完全可以把java实现的设计模式convert成kotlin就可以了,但是这样的话,便会埋没一些kotlin的特色。

Kotlin对比java而言,其大大扩大了函数的灵活性:高阶函数(可以接受函数作为参数),扩展函数(在一个类的外面,为其声明新的方法,静态编译,实例调用)以及独立函数(不依赖于类/对象,可以独立存在于文件中)等等,这使得其实现设计模式有其独特的风格和张力,因此,本文的目的,不仅仅是简单的用kotlin实现设计模式,而是专注于发现kotlin语言的特色风格和张力,同时研究kotlin这个现代语言的简洁性以及实现某些经典模式的便捷性。

本文只专注怎么用kotlin来进行比较特色的gof设计模式实现,基本不会探讨这些模式的思想和优缺点,需要的自行百度其它资料。本文还提供了安卓示例工程。

接下来,我们先看看一些模式的实现。

策略模式

策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。

  • 定义算法抽象,这里,不再是接口的方式,而是直接使用函数类型作为抽象;
typealias PlayVideo = () -> String
  • 算法实例对象,不再是类实例的方式,而是用子类型函数的方式,提供两个;
val tv: PlayVideo = {"用电视看视频"//作为返回值
}
val phone: PlayVideo = {"---用手机看视频---"
}
  • 算法的使用场景以及调用,tv和phone对象可以相互替换,产生不同行为
class Device(var name: String) {fun play(p: PlayVideo): String {return p()}
}
result.text = device.play


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部