zoukankan      html  css  js  c++  java
  • 函数响应式编程(FRP)思想-Callback风格

    ReactiveCocoa是IOS广为使用的技术框架,而ReactiveCocoa的核心思想就FRP。FRP不同于JAVA的object-oriented和AOP,FRP能让你的代码像数学一样简洁,业务像流水一样清晰流畅。

    函数响应式编程

    响应式编程思想为体,函数式编程思想为用。 
    这里写图片描述

    响应式编程

    例如,在命令式编程环境中, a:=b+c表示将表达式的结果赋给 a,而之后改变 b 或 c的值不会影响 a。但在响应式编程中,a的值会随着 b或 c的更新而更新。

    在响应式编程当中,a:=b+c声明的是一种绑定关系。(a与b、c绑定起来了,所以b、c的变化会影响a,这也就是所谓【变化传播】)

    函数式编程

    不产生副作用的函数称为纯函数 
    函数是一等公民=>高阶函数 
    函数式编程抽取了很多常用操作,作为高阶函数,比如map,filter,reduce。 
    有了这些函数,你的代码将被大大简化,也意味着你可以进行更加快速的开发,同时这些函数也帮助别人理解你的代码。


    Callback风格

    客户端开发一个主要组成部分就是监听事件然后更新UI。如下图所示 
    这里写图片描述

    事件来源包括UI事件、网络回调、生命周期回调,通知等等。更新UI往往需要依赖多个事件以及事件包含的数据。所以我们不得不引入共享状态,如下图所示 
    这里写图片描述为了与FRP区分,可以把这种编程风格叫做Callback风格。

    Callback的缺点显而易见:

    The code to manage our state and to update our output is ALL over the place.

    状态的修改可能分布在很多地方,UI的更新也可能分布在很多地方。 
    状态之间的组合以及相互影响。并且容易出现Bug,很有可能出现未考虑到的状态组合。 
    变量式线程同步管理非常复杂。

    FRP优势:

    可读性

    - 代码逻辑更加集中

    - 减少共享变量,减少出错率

    - 框架分步,流程清晰

    复用性

    - 丰富的高阶函数

    https://blog.csdn.net/fly1183989782/article/details/62053973

    ReactiveCocoaRxSwift

    iOS的开发上,Objective-C可以说既是一个巨大的成功,也是一个巨大的限制。Cocoa Touch提供的原生API本身就是目标当年的事件驱动和消息派发的GUI编程模型,并且专门为Objective-C这门类smalltalk的消息式OO语言设计的,更为尴尬的是iOS上没有OS X上自带的Data Binding。种种原因,导致Target-Acion,KVO,Notification,Apple式MVC架构才会一直成为iOS开发的主流。然而,做过开发的都知道,这套架构在大型App,尤其复杂是网络请求和人机交互特别多的情况下,非常容易让整个App架构变得难以维护。

    Apple式的MVC,又称为Massive View Controller,

  • 相关阅读:
    有关vue中组件间的传值问题
    有关vue中同一个组件配置不同的路由产生的系列
    有关vue中用element ui 中的from表单提交json格式总是有冒号的问题解决办法
    有关element ui 中的switch在表格多列显示中全部为关闭或开启
    有关element ui中的 switch在表格中使用多个时互相不收影响的问题
    【PostgreSQL-9.6.3】修改监听的IP和端口
    【Oracle】truncate分区表
    【Oracle】append
    【PostgreSQL-9.6.3】函数(3)--日期和时间函数
    【PostgreSQL-9.6.3】函数(2)--字符型函数
  • 原文地址:https://www.cnblogs.com/feng9exe/p/10273930.html
Copyright © 2011-2022 走看看