当前位置:   article > 正文

Kotlin 函数式编程和设计模式(学习笔记六)

kotlin 函数类型 invoke

六、设计模式

    1、函数式的对象——invoke约定

Kotlin的约定有很多种,而比如使用便捷的get操作,以及重载运算符等等,invoke约定也仅仅是一种约定而已;我们可以把lambda表达式或者函数直接  保存在一个变量中,然后就像执行函数一样直接执行这个变量,这样的变量通常声明的时候都被我们赋值了已经直接定义好的lambda,或者通过成员引用而获取到的函数;但是别忘了,在面向对象编程中,一个对象在通常情况下都有自己对应的类,那我们能不能定义一个类,然后通过构造方法来产生一个对象,然后直接执行它呢?这正是invoke约定发挥作用的地方。

  1. class A(val str: String) {
  2. operator fun invoke() {
  3. println(str)
  4. }
  5. }
  6. fun main(args: Array<String>) {
  7. val a = A("Hello")
  8. a()
  9. }
  10. 输出:Hello

我们只需要在一个类中使用operator来修饰invoke函数,这样的类的对象就可以直接像一个保存lambda表达式的变量一样直接调用,而调用后执行的函数就是invoke函数。

2、策略模式就是将不同的行为策略进行独立封装,与类在逻辑上解耦。即不同的策略类实现不同的接口,在调用策略的时候传不同的类对象进去即可。可以用高阶函数简化策略模式,把策略类改成策略方法,作为参数传到高阶函数。

3、责任链模式就是避免请求的接收者和发送者质检的耦合关系,将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理完为止。

七、函数式编程

函数式编程是关于不变性和函数组合的编程范式。特征如下:

  • 一等函数支持:函数也是一种数据类型,可以作为参数传入另一个函数中,同时函数也可以返回一个函数。

  • 纯函数和不变性:纯函数指的是没有副作用的函数(不去改变外部数据状态)。函数式编程是转换数据而不是改变数据。

  • 函数的组合:在面向对象编程中是通过对象之间发送消息来构建程序逻辑的;在函数式编程中是通过不同函数组合来构建程序逻辑的。

1. 高阶函数

高阶函数是将函数用作参数或者返回值的函数。Kotlin的Collection类型中有大量的这种高阶函数,例如:Iterable的filter函数

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/752218
推荐阅读
相关标签
  

闽ICP备14008679号