mvp设计模式
一、设计模式的简单介绍
MVP的 V 层是由UIViewController 和UIView 共同组成
view 将委托presenter 对它自己的操作,(简单来说就是presenter发命令来控制view的交互,要你隐藏就隐藏,叫你show 你就乖乖的show)
presenter拥有对 view交互的逻辑(就是上面说的意思)
presenter跟model层通信,并将数据转化成对适应UI的数据并更新view
presenter不需要依赖UIKit
view层是单一,因为它是被动接受命令,没有主动能力
二、设计模式中的通信方式
#import "UserModel.h" @protocol UserViewProtocol <NSObject> - (void)userViewDataSource:(NSArray<UserModel *> *)data;
- (void)showIndicator;
- (void)hideIndicator;
- (void)showEmptyView; @end
2.协议中的几个方法实现
- (void)userViewDataSource:(NSArray<UserModel *> *)data { self.friendlyUIData = data; [self.tableView reloadData]; } - (void)showIndicator { [self.indicatorView startAnimating]; self.indicatorView.hidden = NO; } - (void)hideIndicator { [self.indicatorView stopAnimating]; } - (void)showEmptyView { UIAlertController *alertView = [UIAlertController alertControllerWithTitle:@"Alert"message:@"show empty view" preferredStyle:UIAlertControllerStyleAlert]; [alertView addAction:[UIAlertAction actionWithTitle:@"确定"style:UIAlertActionStyleDefault handler:**nil**]]; [self presentViewController:alertView animated:YES completion:^{ }]; }
3.是presenter 可以直接拿到实现了UserViewProtocol 协议的对象,并且向他发送命令
@interface Presenter : NSObject /** 将一个实现了 UserViewProtocol 协议的对象绑定到 presenter上来 @param view 实现了UserViewProtocol的对象,一般来说,应该就是控制器,在MVP中,V 和 VC 共同组成UI 层 */ - (void)attachView:(id <UserViewProtocol>)view; /** 这个是对外的入口,通过这个入口,实现多个对内部的操作,外部只要调用这个接口就可以了 */ - (void)fetchData; @end
by:ml
mvp设计模式的更多相关文章
- 通过TodoList案例对比Vue.js的MVVM设计模式与JQuery的MVP设计模式
Vue MVVM设计模式: 在使用vue进行编程时,不会再涉及到DOM的操作,取而代之的是修改数据层,当把数据进行变更的时候,vue之中它的底层会自动的根据数据的不同帮助我们去重新渲染页面. 编码时不 ...
- Android之MVP设计模式
一.概述 MVP设计模式的前身是MVC,这个无需再议 在安卓工程中MVC对应关系如下: Layout->View : 对应布局文件Activity->Controller,View (其中 ...
- android开发系列之MVP设计模式
最近在开发一个android的项目中,发现了一个很实用的设计模式(MVP).大家可能一看到这个名字就有点蒙,MVP到底是什么鬼呢?它的好用到底体现在哪呢?别着急,下面就让我们一一分享出来. 说到MVP ...
- Android学习探索之运用MVP设计模式实现项目解耦
前言: 一直致力于提高开发效率降低项目耦合,今天想抽空学习一下MVP架构设计模式,学习一下如何运用到项目中. MVP架构设计模式 MVP模式是一种架构设计模式,也是一种经典的界面模式.MVP中的M代表 ...
- MVC和MVP设计模式
参考博客http://www.cnblogs.com/end/archive/2011/06/02/2068512.html ####MVC模式M:model 模型V:view 视图C:control ...
- MVC,MVP设计模式
什么是MVP MVP是模型(Model).视图(View).主持人(Presenter)的缩写,分别代表项目中3个不同的模块. 模型(Model):负责处理数据的加载或者存储,比如从网络或本地数据库获 ...
- 浅谈MVP设计模式
最近公司在做一个医疗项目,使用WinForm界面作为客户端交互界面.在整个客户端解决方案中.使用了MVP模式实现.由于之前没有接触过该设计模式,所以在项目完成到某个阶段时,将使用MVP的体会写在博客里 ...
- android MVP设计模式!
实现原理: MainActivity 用来更新UI,和显示业务逻辑的结果! LoginPresenterCompl 用来处理 业务逻辑 ILoginPresenter 业务处理类抽象出来的接口 ILo ...
- Android MVP 设计模式
1.基本概念 Model : 模型 负责处理数据的加载或者存储,比如从网络或本地数据库获取数据等: View : 视图 负责界面数据的展示,与用户进行交互: Presenter ...
随机推荐
- BZOJ 1576 树剖+LCT
题意:给定一张图,保证 $1$ 号点到其他所有点的最短路径是唯一的,求:对于点 $i$,不经过 $1$ 到 $i$ 最短路径上最后一条边的最短路. 题解:可以先建出最短路树,然后枚举每一条非树边. 对 ...
- Codeforces Round #586
目录 Contest Info A. Cards B. Multiplication Table C. Substring Game in the Lesson D. Alex and Julian ...
- Python基础之定义有默认参数的函数
1. 构建有默认参数的函数 当我们在构建一个函数或者方法时,如果想使函数中的一个或者多个参数使可选的,并且有一个默认值,那么可以在函数定义中给参数指定一个默认值,并且放到参数列表的最后就行了.比如: ...
- [bzoj 1861][zjoi2006] 书架
传送门 Description 1. Top S--表示把编号为S的书放在最上面. 2. Bottom S--表示把编号为S的书放在最下面. 3. Insert S T--T∈{-1,0,1},若编号 ...
- journalnode Can't scan a pre-transactional edit log 异常处理
由于数据磁盘爆满,达到100%,导致journalnode宕掉,在启动journalnode以后,查看日志,提示Can't scan a pre-transactional edit log,这个时候 ...
- webpack4.0源码分析之Tapable
1 Tapable简介 webpack本质上是一种事件流的机制,它的工作流程就是将各个插件串联起来,而实现这一切的核心就是Tapable,webpack中最核心的负责编译的Compiler和负责创建b ...
- Debian/Ubuntu/CentOS开机启动
说明:常用的Linux启动项就是在/etc/rc.local的exit 0语句之间添加启动脚本,另一种方法,使用update-rc.d命令添加/禁止开机启动项. 在centos7中增加脚本有两种常用的 ...
- Django 测试开发4 Django 模板和分页器
Django结合前端框架Bootstrap来开发web页面.pip install django-bootstrap3 在setting.py添加‘bootstrap3’. 继承模板. 在base页面 ...
- Chrome和火狐插件让数以百万计用户隐私数据泄露
https://tech.163.com/19/0721/12/EKK1PRAU00097U7R.html 网易科技讯7月21日消息,据国外媒体报道,流行浏览器诸如广告拦截等扩展功能,已经遭利 ...
- JPG:文件格式系列科普之.JPEG/.JPG(转)
当我们在互联网上浏览内容时,总会看到各种各样的图片,比如在你刷IT之家时,所看到的绝大部分图片都是JPG格式的,这种图片格式之所以在互联网上广受欢迎,是因为相比于PNG.GIF格式,它的体积相对较小, ...