链式编程思想
2016-02-26 13:22
274 查看
1、链式编程思想:是将多个操作(多行代码)通过点号(.)链接在一起成为一句代码,使代码可读性提高。
2、链式编程特点:方法的返回值是block,block必须返回对象本身(返回block时,block所在的方法调用者对象)block的参数是需要操作的值。
对此编程思想代码中有较多解释。
iOS 中习惯于使用masonry布局的人都知道,使用masonry布局时,用的比较多的方法就是
使用案例
在block中调用的方法,可读性非常高,以至于我们很好的理解这个方法的意思,而且无需重复操作。
那我们平时的使用改如何操作呢?
例如我们现在写一个计算器。
这个类肯定继承NSObject,然后对应的算法和一个全局的结果。
如果想要调用直接使用这个函数
2、链式编程特点:方法的返回值是block,block必须返回对象本身(返回block时,block所在的方法调用者对象)block的参数是需要操作的值。
对此编程思想代码中有较多解释。
iOS 中习惯于使用masonry布局的人都知道,使用masonry布局时,用的比较多的方法就是
使用案例
[sv mas_makeConstraints:^(MASConstraintMaker *make) { make.edges.equalTo(sv).with.insets(UIEdgeInsetsMake(10, 10, 10, 10)); /* 等价于 make.top.equalTo(sv).with.offset(10); make.left.equalTo(sv).with.offset(10); make.bottom.equalTo(sv).with.offset(-10); make.right.equalTo(sv).with.offset(-10); */ /* 也等价于 make.top.left.bottom.and.right.equalTo(sv).with.insets(UIEdgeInsetsMake(10, 10, 10, 10)); */ }];
在block中调用的方法,可读性非常高,以至于我们很好的理解这个方法的意思,而且无需重复操作。
那我们平时的使用改如何操作呢?
例如我们现在写一个计算器。
这个类肯定继承NSObject,然后对应的算法和一个全局的结果。
#import <Foundation/Foundation.h> @interface CaculatorMaker : NSObject //caculator的属性,标记为计算结果。在block中操作直接为类别的返回值, @property(nonatomic,assign) int iResult; //加 其返回值为一个block函数。可以继续对其进行操作。 - (CaculatorMaker *(^)(int))add; //减 - (CaculatorMaker *(^)(int))sub; //乘 - (CaculatorMaker *(^)(int))muilt; //除 - (CaculatorMaker *(^)(int))divide;
#import "CaculatorMaker.h" @implementation CaculatorMaker /* * 1、带block的返回值为self的函数 * 2、其返回值为blolck含参的函数 * 3、在返回self之前执行操作 * */ - (CaculatorMaker *(^)(int))add { return ^(int value){ _iResult +=value; return self; }; } - (CaculatorMaker *(^)(int))sub { return ^(int value){ _iResult -=value; return self; }; } - (CaculatorMaker *(^)(int))muilt { return ^(int value){ _iResult *= value; return self; }; } - (CaculatorMaker *(^)(int))divide { return ^(int value){ _iResult /= value; return self; }; } @end
#import <Foundation/Foundation.h> @class CaculatorMaker; @interface NSObject (CaculatorMaker) //返回值结果为caculatore的一个属性值(之前已经设置为其属性)方便于调用及操作 // +(int)makeCaculatorMaker:(void(^)(CaculatorMaker *make))block; @end
/* 计算器类别的创建 链式编程思想(用类别和类还有block创建,最简单的链式编程思想) */ #import "NSObject+CaculatorMaker.h" #import "CaculatorMaker.h" @implementation NSObject (CaculatorMaker) //创建一个含有block的函数,返回值为一个整形,且此block的参数为创建的Caculator类,方便用block调用其方法。 +(int)makeCaculatorMaker:(void(^)(CaculatorMaker *make))block { CaculatorMaker *mgr = [[CaculatorMaker alloc]init]; block(mgr); return mgr.iResult; } @end
如果想要调用直接使用这个函数
[NSObject makeCaculatorMaker:^(CaculatorMaker *make) { make add().sub();//添加需要的操作。 }];
相关文章推荐
- Mybatis generator自动生成代码的几种方法
- C++阻塞队列实现
- JAVA String.format 方法使用介绍
- ASP.NET内置对象的总结
- C语言内存四区
- Java学习笔记(三):数组
- C语言实现链表的逆序打印
- JAVA学习第二十九课(经常使用对象API)- String类
- Qt国际化
- python3配置文件ini读取方法
- VC++中DLL(动态链接库)使用的若干问题
- 类属性复制实现
- Java强引用、 软引用、 弱引用、虚引用
- Asp.net Mvc4默认权限详细(下)
- [置顶] c语言入门项目之4.4——利用“迭代”求运算
- window下在同一台机器上安装多个版本jdk,修改环境变量不生效问题处理办法
- java中构造方法的特殊性
- 转:Asp.net Mvc4默认权限详细(上)
- Qt遍历控件
- C++Primer第5版读书笔记(第3章)