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的网络回调,这里就不细究了。