编程思想

来源:互联网 发布:coc男王升级数据2017 编辑:程序博客网 时间:2024/06/05 09:28

前言

1、面向过程:处理事情以过程为核心,一步一步的实现。
2、面向对象:万物皆对象
封装、继承、多态
封装是为了更好的重用性、可扩展性,但要综合考虑性能问题,即使新增了判断也会增加性能,只是不会量级的增加。
比如简单工厂和抽象工厂(反射机制)的封装,会增加性能的消耗。但把对象的管理变成了可配置化。
3、链式编程思想:

是将多个操作(多行代码)通过点号(.)链接在一起成为一句代码,使代码可读性好a(1).b(2).c(3)。链式编程特点:方法的返回值是block,block必须有返回值(本身对象),block参数(需要操作的值)代表:masonry框架。

4、响应式编程思想:

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

代表:KVO运用。Reactive Cocoa框架

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

每个方法必须有返回值(本身对象),把函数或者Block当做参数,block参数(需要操作的值)block返回值(操作结果)

代表:ReactiveCocoa。

正文

链式编程的例子

block 实现链式编程的例子(将block和method的特性 结合起来)
在Masonry 自动布局框架中最明显体现这个特点。

- (UIImageView *)imgForReason{    if (nil == _imgForReason) {        UIImageView *img2 = [[UIImageView alloc] init];        _imgForReason = img2;        [self addSubview:_imgForReason];               [img2 mas_makeConstraints:^(MASConstraintMaker *make) {            make.left.equalTo(self.mas_left).offset(25);            make.top.equalTo(self.imgForPassword.mas_bottom).offset(12);            make.size.mas_equalTo(CGSizeMake(kScreenWidth-100, 76));        }];    }    return _imgForReason;}

调用的equalTo:方法 返回的就是一个返回值为MASConstraint的block

- (MASConstraint * (^)(id))equalTo { return ^id(id attribute) { return self.equalToWithRelation(attribute, NSLayoutRelationEqual); }; }

函数式编程总结

  • 如果想再去调用别的对象方法,那么就需要返回一个对象;
  • 如果想用()去执行,那么需要返回一个block;
  • 如果想让返回的block再调用对象的方法,那么这个block就需要返回一个对象(即 返回值为一个对象的block)。

响应式编程的概念

在程序开发中:Z = KN赋值之后 K  或者 N  的值变化后,Z  的值不会跟着变化响应式编程,目标就是,如果 K  或者 N  的数值发生变化,Z  的数值会同时发生变化;

Reactive Cocoa就是一个响应式编程的经典框架!

原创粉丝点击