iOS开发框架-CDD应用层架构学习总结

怎么样用context,把数据、view和业务逻辑串起来的?

例如:聊天页面,输入框view产生的“hello”文本,直接经过context传递到BusinessObject进行处理,生成的新消息message经过DataHandler插入到message array以后,直接通知到message tableview进行刷新。方法调用的路径变短了,意味着调试的时候step over的次数减小了。git

经过model+protocol进行耦合。耦合的双方须要引用相同的model和protocol文件。这种方式属于面向接口编程的范畴,耦合也比较弱。优势是调试方便,delegate的调试能够单步step into。github

 

 

几个理解点:编程

  • 为何引入Context,或者Context的用途是什么?数组

 VC建立并强引用Context,让dataHandler和bussinessObject弱引用这个Context,让本身的子view强引用这个Context。这样经过Context链接业务、VC、View、数据。spa

  • data flow是怎样的?

用户经过view产生数据,经过Context将数据,交给BussinessObject(将数据model化),交给dataHandler作增删改,经过KVO,刷新view。3d

  • 为何有的地方用的是weakContext?

Context初始化完成,强引用dataHandler和bussinessObject。为了不互相强引用,形成内存泄漏,因此CDDDataHandler和CDDBusinessObject弱引用Context。调试

  •  bussinessObject的属性baseController,用途是什么?

在VC建立bussinessObject时,bo.baseController = self;// 用于bussinessObject处理页面跳转(业务)orm

遇到的坑:blog

  • 为何按钮的图片没有显示出来?

[_imgAvatarButton sd_setImageWithURL:[NSURL URLWithString:msg.fromUser.avatarUrl] forState:UIControlStateNormal];//由于info里没有容许http继承

 

EMainController:绑定vc,view,presenter,interactor,context,发消息给IMainView

EMainPresenter:继承EPresenter,组装model数组,提供给adapter;发消息给IMainInteractor
EMainView:继承CDDView,初始化subview
EMainAdapter:继承EAdapter,能够重写dataSource和delegate方法,
EMainInteractor:继承CDDInteractor,转场vc

IMainPresenter:自定义协议方法,发消息给EMainPresenter,作具体的事情
IMainView:自定义协议方法,发消息给EMainView,作具体的事情
IMainInteractor自定义协议方法,发消息给EMainInteractor,作具体的事情

MainEntry:继承EAdapter,定义model,并提供初始化方法
EAdapter:收发数据,执行dataSource和delegate

 

文献:http://mrpeak.cn/blog/cdd/

项目实例:https://github.com/music4kid/TKeyboard

相关文章
相关标签/搜索