美文网首页
快速理解 函数式编程,响应式编程,链式编程

快速理解 函数式编程,响应式编程,链式编程

作者: 画十 | 来源:发表于2018-06-21 14:50 被阅读47次

    函数式编程

    • 写好的函数,专门执行特定功能.一般在Util类中出现比较多,比如:

      /**
       * 根据手机的分辨率从 dp 的单位 转成为 px(像素)
       */
      fun dip2px(context: Context, dpValue: Float): Int {
          val scale = context.resources.displayMetrics.density
          return (dpValue * scale + 0.5f).toInt()
      }
      

      函数式写死的,它只负责单一的任务,需要的时候调用它,它会根据传入参数给你返回值.

    响应式编程

    • 一个比较形象的比喻就是流水线, 比如蛋筒冰淇淋的蛋筒,是怎么卷出来的?,它需要经过:
      烤制蛋筒 --> 卷边成型 --> 冷却定型 --> 套上纸壳儿 --> 出厂检测的过程
      下面大家来欣赏下:

      蛋筒流水线
      响应式编程代码示例:
      //举一个开门的步骤
      Observable.just(context)
                .map{拿出钥匙}
                .map{开门}
                .map{拔掉钥匙}
                .map{关门}
                .subscribe()
      

      响应式编程有比较鲜明的前后顺序,后面的步骤要依赖于之前的步骤.

    链式编程

    • 链式编程使用的就是Builder模式,例如非常经典的Android AlertDialog的创建.

       // 用Builder模式创建Dialog
      AlertDialog.Builder builder = new AlertDialog.Builder(this)
                    .setTitle("Hello Dialog")
                    .setIcon(R.drawable.logo)
                    .setMessage("This is a Dialog")
                    .show();
      

      链式编程和响应式编程代码格式有点类似,但是链式编程一般没有严格的前后顺序关系,比如上面的setTitlesetMessage,谁前谁后无所谓.

    参考:

    1. 前几天有个同学问我,“什么是响应式编程”?另,它和函数式编程有啥区别?
    2. RxJava 之 响应式编程
    3. 重新理解响应式编程
    4. 几种编程思想(链式编程、响应式编程、函数式编程)
    5. 关于RxJava的详解
    6. 结合Android浅谈Builder模式
    7. 蛋筒冰淇淋的蛋筒,是怎么卷出来的?

    相关文章

      网友评论

          本文标题:快速理解 函数式编程,响应式编程,链式编程

          本文链接:https://www.haomeiwen.com/subject/kknqyftx.html