浅谈编程思想
一. 常见的编程思想
- 面向过程:以过程为中心的编程思想。分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用。
- 面向对象(OOP):把事物抽象成对象,然后给对象赋一些属性和方法,然后让每个对象去执行自己的方法。(*封装,继承,多态)
- 链式编程:每个方法返回一个”返回值为自身且带有一个参数项“的Block (或直接返回自身),形成Block串联,也就是所谓的链式编程。(eg: Monsary, SnapKit )
- 函数式编程:
思想上,函数式编程可谓博大精深,建议看这篇文章了解: 传送门
形式上,函数是一等公民,常见函数(闭包)作为参数或返回值传递、闭包嵌套、函数组合等形式。(eg: map, filter, reduce等高阶函数,Monsary, SnapKit 等等) - 响应式编程:对于输入的变动加以监听,响应式地,每次产生对应的输出。(eg: 通知,kvo)
- 面向协议编程(POP):面向抽象和具象而不是具体的某个类。
二. 链式编程
核心:函数返回值为自身(或者一个返回自身的Block)。
1.实现
1 | func sub(num: Double) -> Calculator { |
2.调用
1 | func testA() { |
三. 函数式编程
核心:方法(函数)的参数或者返回值为 函数 (Block)
1.实现
1 | static func makeOperation(closure:(Calculator)->Void) -> Double { |
2.使用
1 | func testC() { |
四. 响应式编程
核心:建立从’’输入 -> 输出’’的通道 ,每次输入响应式地产出对应的输出
1.实现
1 | func addNotification() { |
2.使用
1 | self.postNotification() |
五. 面向协议编程
核心:Don’t start with a class. Start with a protocol. — WWDC 2015
1.实现
1 | protocol CalculatorProtocol { |
2.使用
1 | class MCObject:CalculatorProtocol { |
六.相关框架
1.ReactiveCocoa
https://github.com/ReactiveCocoa/ReactiveCocoa