几种编程思想(链式编程、响应式编程、函数式编程)

咸玄天
2023-12-01

1、链式编程,主要通过点‘.’来连接不同的函数调用
iOS上实现链式编程比较好的框架就是Masonry,通过查看Masonry源码,我们发现,每一个函数返回类型都是一个Block变量,然后Block变量中返回的内容就是当前对象本身。这样来实现通过点调用,直接上实例,实现一个简单的计算器

/**
 加法
 */
- (Calculator * (^)(CGFloat num))add {
    return ^id(CGFloat num) {
        result += num;
        return self;
    };
}

/**
 减法
 */
- (Calculator * (^)(CGFloat num))sub {
    return ^id(CGFloat num) {
        result -= num;
        return self;
    };
}

demo:

    Calculator *cal = [[Calculator alloc] init];
    cal.result = 0.0;
    cal.add(5).add(3);
    NSLog(@"%f", cal.result);

运算结果

2017-09-11 16:08:16.099 iOSCal[58230:1582453] 8.000000

通过上面的调用方式,不难发现,链式编程可以把对同一个实例对象同时调用N次方法。代码的可读性更好。
2、响应式编程
业内经典的实例就是ReactiveCocoa,它都敢叫Cocoa,足以说明它的强大之处,事实上,它就是KVO的一个灵活展示。不需要考虑调用顺序,只需要知道考虑结果,类似于蝴蝶效应,产生一个事件,会影响很多东西,这些事件像流一样的传播出去,然后影响结果,借用面向对象的一句话,万物皆是流。是把操作尽量写成一系列嵌套的函数或者方法调用。
3、函数式编程
这个也是iOS最常用的,类似于AF的网络回调,这里就不细究了。

 类似资料: