(一)MVP设计模式
一、MVP介绍
- View不直接与Model交互,而是通过与Presenter交互来与Model间接交互
- Presenter与View的交互是通过接口来进行的,更有利于添加单元测试
- 通常View与Presenter是一对一的,但复杂的View可能绑定多个Presenter来处理逻辑
- View可以与Model直接交互
- Controller是基于行为的,并且可以被多个View共享
- 可以负责决定显示哪个View
- public class UserBean {
- private String mFirstName ;
- private String mLastName ;
- public UserBean (String firstName, String lastName) {
- this .mFirstName = firstName;
- this .mLastName = lastName;
- }
- public String getFirstName() {
- return mFirstName ;
- }
- public String getLastName() {
- return mLastName ;
- }
- public interface IUserView {
- int getID();
- String getFristName();
- String getLastName();
- void setFirstName (String firstName);
- void setLastName (String lastName);
- }
- public interface IUserModel {
- void setID (int id);
- void setFirstName (String firstName);
- void setLastName (String lastName);
- int getID();
- UserBean load (int id);//通过id读取user信息,返回一个UserBean
- }
- public class UserPresenter {
- private IUserView mUserView ;
- private IUserModel mUserModel ;
- public UserPresenter (IUserView view) {
- mUserView = view;
- mUserModel = new UserModel ();
- }
- public void saveUser( int id , String firstName , String lastName) {
- mUserModel .setID (id );
- mUserModel .setFirstName (firstName );
- mUserModel .setLastName (lastName );
- }
- public void loadUser( int id ) {
- UserBean user = mUserModel .load (id );
- mUserrView .setFirstName (user .getFirstName ());//通过调用IUserView的方法来更新显示
- mUserView .setLastName (user .getLastName ());
- }
- }
- public class UserActivity extends Activity implements OnClickListener ,
- IUserView {
- private EditText mFirstNameEditText , mLastNameEditText , mIdEditText ;
- private Button mSaveButton , mLoadButton ;
- private UserPresenter mUserPresenter ;
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- switch ( v. getId()) {
- case R .id .saveButton :
- mUserPresenter .saveUser (getID (), getFristName (),
- getLastName ());
- break ;
- case R .id .loadButton :
- mUserPresenter .loadUser (getID ());
- break ;
- default :
- break ;
- }
- }
(一)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的体会写在博客里 ...
- mvp设计模式
一.设计模式的简单介绍 MVP的 V 层是由UIViewController 和UIView 共同组成view 将委托presenter 对它自己的操作,(简单来说就是presenter发命令来控制v ...
- android MVP设计模式!
实现原理: MainActivity 用来更新UI,和显示业务逻辑的结果! LoginPresenterCompl 用来处理 业务逻辑 ILoginPresenter 业务处理类抽象出来的接口 ILo ...
- Android MVP 设计模式
1.基本概念 Model : 模型 负责处理数据的加载或者存储,比如从网络或本地数据库获取数据等: View : 视图 负责界面数据的展示,与用户进行交互: Presenter ...
随机推荐
- CSS3过渡效果实现菜单划出效果
下载地址 这是大体上的原理,当然案例比这个多 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" & ...
- JavaScript 函数之 ------------------ 闭包
谈到闭包,人们常常会把匿名函数和闭包混淆在一起.闭包是指由权访问另一个函数作用域中的变量的函数.创建闭包的常见方式,就是在一个函数内部创建另一个函数,仍以前面的 createComparisonFun ...
- 调整cell的间距
-(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier ...
- destoon程序中qq号码,手机号,msn必选项实现方法
最近发现好多客户,信息不完全!还是把qq号码,手机号,msn设为必选项比较好!下面以把qq设为必选项为例找到模板 template/default/member/edit.htm 找到 functio ...
- OpenStack点滴01-概览
OpenStack项目由Rackspace和NASA(美国国家航空航天局)共同发起,它是一个旨在为公共及私有云的建设与管理提供软件的开源项目. 作为一个开源云平台,OpenStack的首要任务是简化云 ...
- Asp.net Core 缓存 MemoryCache 和 Redis
Asp.net Core 缓存 MemoryCache 和 Redis 目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 经过 N 久反复的尝试,翻阅了网上无数的资料,GitH ...
- 【iOS问题】字典转模型,属性个数不匹配问题
一.字典转模型的键值对与模型属性不匹配问题 1. 字典的键个数 < 模型的属性个数 (key 能与模型的属性匹配) 1> .KVO 方式: - setValuesForKeysWithDi ...
- UI、ID、UE和GUI,这些都是什么
在网页和应用设计领域中,我们经常会听到人们用这些英文缩写描述设计工作,那么它们各自代表什么含义?具体的工作.方向和区别是什么呢? 下面让我们先来看看它们的英文全称和基本概念. UI(User Inte ...
- MPMediaPickerController 选取本地音频--备用
MPMediaPickerController 与 UIImagePickerController 类似,允许用户从音乐库中选取音乐.播客.音频书. 一.创建 MPMediaPickerControl ...
- 使用hexo创建github博客
前言 前面说过,之前用wordpress辛辛苦苦搭建的博客,因为服务器和域名的问题挂掉了.后来发现github也能够搭建自己的博客,不需要去关心主机域名的问题,而且还能使用Markdown来写博客,就 ...