编程思想

2016-08-05  本文已影响56人  墨狂之逸才

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

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

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

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

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

链式编程思想-模仿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
上一篇 下一篇

猜你喜欢

热点阅读