iOS 编程思想

7.8 编程思想

链式编程

特点

  • 是将多个操作(多行代码)通过点号(.)链接在一起成为一句代码,使代码可读性好。a(1).b(2).c(3)
  • 方法的返回值是block,block必须有返回值(对象本身),block参数(需要操作的值)
  • 示例
@class Calculator;
typedef Calculator * (^addBlock)(int);
typedef Calculator * (^subBlock)(int);
typedef Calculator * (^mulBlock)(int);
typedef Calculator * (^diviBlock)(int);
@interface Calculator : NSObject

- (addBlock)add;
- (subBlock)sub;
- (mulBlock)mul;
- (diviBlock)divi;

@interface Calculator()
@property (assign , nonatomic)int currNum;
@end
@implementation Calculator
- (addBlock)add
{
    return ^(int a){
        self.currNum += a;
        NSLog(@"result=%d",self.currNum);
        return self;
    };
}
- (subBlock)sub{
    return ^(int a){
        self.currNum -= a;
        NSLog(@"result=%d",self.currNum);
       return self;
    };
}
- (mulBlock)mul{
    return ^(int a){
        self.currNum *= a;
        NSLog(@"result=%d",self.currNum);
        return self;
    };
}
- (diviBlock)divi{
    return ^(int a){
        self.currNum /= a;
        NSLog(@"result=%d",self.currNum);
       return self;
    };
}

  Calculator * ca = [[Calculator alloc] init];
    ca.add(10).sub(1).mul(9).divi(9);
@end

函数编程

特点

  • 函数式编程思想:是把操作尽量写成一系列嵌套的函数或者方法调用。
    • 函数式编程特点:每个方法必须有返回值(本身对象),把函数或者Block当做参数,block参数(需要操作的值)block返回值(操作结果)
    • 代表:ReactiveCocoa。
    • 用函数式编程实现,写一个加法计算器,并且加法计算器自带判断是否等于某个值.
    • 示例
      #import
      
      @class CaculatorMaker;
      
      @interface NSObject (CaculatorMaker)
      
      
      
      //计算
      
      + (int)makeCaculators:(void(^)(CaculatorMaker *make))caculatorMaker;
      
      @end
      
      #import "NSObject+CaculatorMaker.h"
      
      #import "CaculatorMaker.h"
      
      
      
      @implementation NSObject (CaculatorMaker)
      
      
      
      //计算
      
      + (int)makeCaculators:(void(^)(CaculatorMaker *make))block
      
      {
      
          CaculatorMaker *mgr = [[CaculatorMaker alloc] init];
      
          block(mgr);
      
          return mgr.iResult;
      
      }
      
      @end
      
      
      @interface CaculatorMaker : NSObject
      
      @property (nonatomic, assign) int iResult;
      
      //加法
      
      - (CaculatorMaker *(^)(int))add;
      
      
      
      //减法
      
      - (CaculatorMaker *(^)(int))sub;
      
      
      
      //乘法
      
      - (CaculatorMaker *(^)(int))muilt;
      
      
      
      //除法
      
      - (CaculatorMaker *(^)(int))divide;
      
      @end
      
        
      #import "CaculatorMaker.h"
      @implementation CaculatorMaker
      
      
      
      - (CaculatorMaker *(^)(int))add
      
      {
      
         return ^(int value)
      
          {
      
              _iResult += value;
      
              return self;
      
          };
      
      }
      
      @end
        
      //调用
        int iResult = [NSObject makeCaculators:^(CaculatorMaker *make) {
      
           make.add(1).add(2).add(3).divide(2);
      
         }];
      

响应式编程

特点

  • 响应式编程思想:不需要考虑调用顺序,只需要知道考虑结果,类似于蝴蝶效应,产生了一个事件,会影响很多东西,这些事件就像流一样传播出去,然后影响结果,借用面向对象的一句话,万物皆是流,
  • 代表:KVO
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容