编程思想

1.面向过程:处理事情以过程为核心,一步一步的实现。

2.面向对象:万物皆对象

3.链式编程思想:是将多个操作(多行代码)通过点号(.)链接在一起成为一句代码,使代码可读性好。a(1).b(2).c(3)

  • 链式编程特点:方法的返回值是block,block必须有返回值(本身对象),block参数(需要操作的值)
  • 代表:masonry框架。

4.响应式编程思想:不需要考虑调用顺序,只需要知道考虑结果,类似于蝴蝶效应,产生一个事件,会影响很多东西,这些事件像流一样的传播出去,然后影响结果,借用面向对象的一句话,万物皆是流。

  • 代表:KVO运用。

5.函数式编程思想:是把操作尽量写成一系列嵌套的函数或者方法调用。

  • 函数式编程本质:就是往方法中传入Block,方法中嵌套Block调用,把代码聚合起来管理
  • 函数式编程特点:每个方法必须有返回值(本身对象),把函数或者Block当做参数,block参数(需要操作的值)block返回值(操作结果)
  • 代表:ReactiveCocoa。
链式编程思想-模仿masonry写一个加法计算器
Calculator分类
#import <Foundation/Foundation.h>
#import "CalculatorManager.h"

@interface NSObject (Calculator)

+ (double)gw_makeCalculate:(void(^)(CalculatorManager *manager))block;

@end
#import "NSObject+Calculator.h"

@implementation NSObject (Calculator)

+ (double)gw_makeCalculate:(void (^)(CalculatorManager *))block {
    CalculatorManager *manager = [[CalculatorManager alloc] init];
    block(manager);
    return manager.result;
}

@end
CalculatorManager类
#import <Foundation/Foundation.h>

@interface CalculatorManager : NSObject

@property (nonatomic, assign) double result;

- (CalculatorManager *(^)(double))add;

@end
#import "CalculatorManager.h"

@implementation CalculatorManager
- (CalculatorManager *(^)(double))add {
    
    return ^(double value) {
        _result += value;
        return self;
    };
}

//    CalculatorManager *(^AddBlock)(double) = ^(double value) {
//        _result += value;
//        return self;
//    };

@end
方法的调用
#import "ViewController.h"
#import "Masonry.h"
#import "NSObject+Calculator.h"
@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    double result = 0;
    result = [NSObject gw_makeCalculate:^(CalculatorManager *manager) {
        manager.add(1).add(2);
    }];
    NSLog(@"%f",result);
}

@end
响应式编程思想-写一个加法计算器
CalcultorMake类
#import <Foundation/Foundation.h>

@interface CalcultorMake : NSObject

@property (nonatomic, assign) int result;

- (instancetype)gw_makeCalculte:(int(^)(int value))calculteBlock;

@end
#import "CalcultorMake.h"

@implementation CalcultorMake

//函数式编程思想:方法的返回值必须是对象本身,把函数或block当做方法的参数,block的参数是需要操作的值,block的返回值是操作的结果值
- (instancetype)gw_makeCalculte:(int (^)(int))calculteBlock {
    _result = calculteBlock(_result);
    return self;
}

@end
方法的调用
#import "ViewController.h"
#import "Masonry.h"
#import "NSObject+Calculator.h"
#import "CalcultorMake.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    //函数式编程思想
    CalcultorMake * make = [[CalcultorMake alloc] init];
    [[make gw_makeCalculte:^int(int value) {
        value += 5;
        value -= 3;
        return value;
    }] result];
}

@end
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容