经过一个新的项目来验证过之前提出的架构模式,有些地方在实践中又进一步完善,至少目前的项目已经完全适用了。
CP-VIP模式:
Controller Protocol View Interactor Presenter
Controller层新的模型图:
VIP架构模式.png和之前的提出的模式有些不同的是:加入了protocol的思想,Controller、View、Presenter、Interactor之间的数据传递,都调用自己的实现的protocol类,这样极大的降低了代码的耦合性。
例如:
在presenter类中需要实现跳转到SecondController页面,只需要调用方法:
[(id<PBMainInteractorProtocol>)self.baseController.interactor gotoSecondController];
subViews中某个按钮调用Controller中的方法,也可以通过Protocol来实现,如:
[(id<PBMainInteractorProtocol>)self.baseController.interactor gotoTalkController];
方法中的self.baseController在subViews中也指向是Controller。
这样子是不是避免了多个delegate的传递,或者NSNotification的注册响应。
下面举个IM中 聊天框页面布局来介绍这个框架的使用。
1分析聊天框层次划分:
客户端功能上:聊天网络服务(TalkNetServer)
聊天数据管理 (TalkDBServer)
聊天界面展示 (TalkView)
今天先来说一下简单的UI聊天界面层
Talk.jpg
层次多了个adapter,是因为用到了UITableView,用了android的设计思想,将UITableViewDelegate和UITableViewDataSource实现封装到适配器(Adapter)中,简少类的代码量,并无其他意义。
PBTalkView由输入框(PBTalkInputBar)、PBTalkTableHeaderView、功能视图(PBBottomView)和TableView组合而成。
在GitHub上给出了一个之前的Demo 稍微完善了一下。
网友评论