美文网首页
链式编程思想

链式编程思想

作者: SayFarewell123 | 来源:发表于2017-03-14 23:51 被阅读0次

链式编程思想:通过点语法增加代码可读性
使用方法:设计一个类,定义类的一个对象方法(例如add),这个方法没有参数,返回值是一个block。(目的是可以用点语法和括号传参数,例如xxx.add(20) )返回值的block必须有参数和返回值,有参数的作用是可以在外面调用时传要计算的值进来,例如add(20)传了20进来,返回值必须是对象方法所在的类本身,目的是返回这个类之后可以继续调用对象方法,形成链式。

SYXCalculateMaker.h

//
//  SYXCalculateMaker.h
//  SYXBlockTest2
//
//  Created by admin on 17/3/14.
//  Copyright © 2017年 admin. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface SYXCalculateMaker : NSObject

@property (nonatomic, assign) int result;

- (SYXCalculateMaker * (^)(int num))add;

@end

SYXCalculateMaker.m

#import "SYXCalculateMaker.h"

@implementation SYXCalculateMaker

- (SYXCalculateMaker *(^)(int num))add{


    return ^(int num){

        self.result += num;

        return self;

    };


}

@end

在外面调用

#import "ViewController.h"
#import "SYXCalculateMaker.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    SYXCalculateMaker *maker = [[SYXCalculateMaker alloc] init];

    int output = [maker.add(10).add(50).add(808) result];

    NSLog(@"%d", output);

}


@end

利用block实现高聚合代码(实现一个功能的代码都放在一起)

  1. 定义一个分类,使所有类都能直接调用

NSObject+SYXCalculator.h

#import <Foundation/Foundation.h>
#import "SYXCalculateMaker.h"

@interface NSObject (SYXCalculator)

+ (int) makeCalculation:(void(^)(SYXCalculateMaker *maker))block;

@end

NSObject+SYXCalculator.m

#import "NSObject+SYXCalculator.h"

@implementation NSObject (SYXCalculator)

+ (int)makeCalculation:(void (^)(SYXCalculateMaker *maker))block{

    SYXCalculateMaker *maker = [[SYXCalculateMaker alloc] init];

    // 执行block,相当于执行maker.add(10).add(xxx)... 此时结果已经在result中保存了
    block(maker);

    // 返回结果
    return maker.result;

}

@end

使用这个方法实现计算代码高聚合

#import "ViewController.h"
#import "SYXCalculateMaker.h"
#import "NSObject+SYXCalculator.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

//    SYXCalculateMaker *maker = [[SYXCalculateMaker alloc] init];
//
//    int output = [maker.add(10).add(50).add(808) result];
//
//    NSLog(@"%d", output);

    int number  = [NSObject makeCalculation:^(SYXCalculateMaker *maker) {

        maker.add(22).add(44);
        maker.add(123).add(22).add(33);
        maker.add(99).add(70);

    }];

    NSLog(@"%d", number);


}


@end

相关文章

  • 链式编程思想

    链式编程思想 链式编程思想

  • 一、链式编程思想、响应式编程思想和函数式编程

    1. 链式编程思想 链式编程思想的核心就是方法的返回值必须是Block,Masonry是链式编程思想应用的代表。 ...

  • 链式编程思想简介

    链式编程思想简介

  • 工作iOS技术总结

    链式编程、函数式、面向接口编程思想 iOS 之ReactiveCocoa 链式编程2 WKWebView的缓存处理...

  • Swift 链式编程思想让你的代码更优雅

    Swift链式编程思想 一、知识小集锦 在介绍链式编程思想之前,我们先了解一下我们所知道的一些编程思想: l面向过...

  • Swift 链式编程思想学习

    Swift链式编程思想 一、知识小集锦 在介绍链式编程思想之前,我们先了解一下我们所知道的一些编程思想: l面向过...

  • 编程思想-链式编程

    编程思想-链式编程 链式编程(链式调用)的主要表现是支持点语法结构的代码,代表库可以参照 Masonry 或 Sn...

  • 链式编程思想

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

  • 链式编程思想

    什么是链式编程?顾名思义,链式编程是通过一行代码,实现某种功能。这里比较经典的案例就是masonry框架,相信对于...

  • 链式编程思想

    作为一个iOS程序员基本上都应该接触过Masonry这个自动布局库。这个库能够帮助程序员极大程度的简化自动布局的代...

网友评论

      本文标题:链式编程思想

      本文链接:https://www.haomeiwen.com/subject/yoeknttx.html