利用block实现链式编程

虽然链式编程很少见,但是某些场合下,如果能够巧妙利用block 实现链式编程的话,不仅会提高开发效率,而且代码很清晰直观!也许你会爱上它的!学习它,你只需记住它的写法就行了。
  • 我曾经做过一个蓝牙项目,由于步骤比较多!因为常规写法要调用很多方法一大堆代码看起来也晕晕的,后来,使用到链式编程,代码易读使用更方便!下面分享一下链式编程的简单使用!

  • 链式编程,没什么难,就是利用block直接按照格式写就行了。

下面用一个例子说明:我要去市场买菜!!!(常规写法:)

-首先:新建一个Person类

  • 创建方法(常规写法):
    // 无返回值
    - (void)peoples; // 谁
    - (void)byBuses; // 坐公交去
    - (void)buyVege; // 买东西

  • 实现方法:
    // 无返回值
    - (void)peoples
    {
    NSLog(@"我");
    }

    - (void)byBuses
    {
      NSLog(@"坐公交去");
    }
    
    - (void)buyVege
    {
      NSLog(@"买西红柿和茄子");
    }
    
  • 在main函数调用:
    Person *p = [[Person alloc] init];

      [p peoples];
      [p byBuses];
      [p buyVege];
    
  • 打印结果:

打印结果.png
缺点:如果有许多方法呢?在调用的时候那就要写好多行代码,而且也不好看!

用block 巧妙使用链式编程:

  • 和上面一样,就是注意格式写法而已,并且多了个返回值。

  • 声明方法:
    // 我做车去买菜
    - (Person *(^)(NSString *name))people; // 谁
    - (Person *(^)())byBus;// 做公交
    - (Person *(^)(NSString *VegName))buyVegetables; // 去买菜

  • 实现方法:
    // 我做车去买菜
    - (Person *(^)(NSString *))people
    {
    return ^(NSString *name){
    NSLog(@"帅哥:%@",name);
    return self;
    };
    }

    - (Person *(^)())byBus
    {
          return ^{
            NSLog(@"坐公交去");
            return self;
         };
    }
    
    - (Person *(^)(NSString *))buyVegetables
    {
          return ^(NSString *buyVege){
              NSLog(@"买:%@",buyVege);
            return self;
      };
    }
    
  • 在main函数调用:
    Person *p = [[Person alloc] init];
    // 只需用点就实现调用了
    p.people(@"光明程辉").byBus().buyVegetables(@"西红柿、茄子");

  • 实现打印结果:
打印结果.png

优点:简单,思路清晰!易懂!

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

推荐阅读更多精彩内容