• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > MVP解析,mvp模式解析实践

MVP解析,mvp模式解析实践

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了android mvp设计模式,mvp设计模式,安卓mvp设计模式,mvp模式,mvp架构模式等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

MVP解析,mvp模式解析实践


一套可以直接复制使用的MVP框架

通过对MVP设计模式学习,对MVP也有了一个初步的认识,以登录Login模块为例,封装MVP如下:

package com.example.administrator.frameapp.api;

/**
 * 存放url的接口
 * Created by Zyh on 2016/11/17.
 */
public interface ApiUrl {
    String IP="http://192.168.8.4/tp3/";
    String BASEURL=IP+"api.php/Home/";
}
package com.example.administrator.frameapp.api;
import io.reactivex.Flowable;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;

/**
 * Created by Zyh on 2016/11/17.
 */
public interface ApiService {
    @FormUrlEncoded
    @POST("login/login")
    Flowable<ApiResult> login(@Field("name") String name, @Field("password") String password);
}
package com.example.administrator.frameapp.api;

/**
 * Created by Zyh on 2016/11/17.
 */
public class ApiResult<T> {
    private  int code;
    private String Msg;
    private T data;

    public int getCode() {
        return code;
    }

    @Override
    public String toString() {
        return "ApiResult{" +
                "code=" + code +
                ", Msg='" + Msg + '\'' +
                ", data=" + data +
                '}';
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMsg() {
        return Msg;
    }

    public void setMsg(String msg) {
        Msg = msg;
    }

    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }
}
package com.example.administrator.frameapp.api;

import com.jakewharton.retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;

import okhttp3.OkHttpClient;
import okhttp3.logging.HttpLoggingInterceptor;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

/**
 * Created by Zyh on 2016/11/17.
 */
public class Api {
    private Retrofit mRetrofit;
    public ApiService mApiservice;
    private Api() {
        HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
        interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);//请求的内容和响应的内容都存在这个系统的BODY中
        OkHttpClient mOkHttpClient = new OkHttpClient.Builder().addInterceptor(interceptor).build();
        mRetrofit = new Retrofit.Builder()
                .client(mOkHttpClient)
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .addConverterFactory(GsonConverterFactory.create())
                .baseUrl(ApiUrl.BASEURL)
                .build();
        mApiservice = mRetrofit.create(ApiService.class);
    }
    //静态内部类的单例模式:内部类决定了什么时候加载他就什么时候进行加载,
    private static class SingleHolder {
        private static final Api INSTANCE = new Api();
    }

    public static Api getInstance() {
        return SingleHolder.INSTANCE;

    }
}

 

package com.example.administrator.frameapp.ui.base;

/**
 * 创建base类是为了统一管理
 * BasePresent是抽象类
 * 将model和view关联起来
 * Created by Zyh on 2016/11/17.
 */
public abstract class BasePresent<M,V> {
    public M mModel;
    public V mView;
    public void setVM(V v,M m){
        //这个方法将LoginPresenter中方法中类型映射成具体的类型
        this.mModel=m;
        this.mView=v;
    }
}
package com.example.administrator.frameapp.ui.base;

/**
 * Created by Zyh on 2016/11/17.
 */
public interface BaseView {
}
package com.example.administrator.frameapp.ui.base;

/**
 * Created by Zyh on 2016/11/17.
 */
public interface BaseModel {
}

 

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • android中常见的设计模式有哪些?,android设计模式
  • MVP解析,mvp模式解析实践
  • Android MVP 设计模式,androidmvp
  • MVP模式在Android开发中的最佳实践

相关文章

  • 2017-05-26Linux内核系列—9.操作系统开发之Loader,linuxloader
  • 2017-05-26Android Studio中使用AIDL进行进程间通信
  • 2017-05-26仿拉手团购App2--当前城市选择Activity,app2--activity
  • 2017-05-26Android中SimpleAdapter的使用—自定义列表,自定义simpleadapter
  • 2017-05-26关于Android项目隐藏标题栏的方法总结,android标题栏
  • 2017-05-26Android群英传笔记系列一view的介绍,android群英
  • 2017-05-26Handler消息传递机制(二)Handler,Loop,Message,MessageQueue的工作原理
  • 2017-05-26编译器开发系列--Ocelot语言2.变量引用的消解,编译器--ocelot
  • 2017-05-26MultiTouch————多点触控,伸缩图片,变换图片位置,
  • 2017-05-222.5.4 AutoCompleteTextView(自动完成文本框)的基本使用

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 安卓开源项目周报0222,安卓开源项目0222
    • 8.3.1 三个绘图工具类详解
    • Android开发学习之路--图表实现(achartengine/MPAndroidChart)之初体验
    • Android笔记——Android自定义控件,android自定义控件
    • Android——eclipse下运行android项目报错 Conversion to Dalvik format failed with error 1解决,androiddalvik
    • udp connect 总结
    • Android开发学习之路--网络编程之xml、json
    • 使用word写博客3,word写博客
    • RK3288开发过程中遇到的问题点和解决方法之Kernel,rk3288kernel
    • 仿拉手团购App8-- 更多模块,拉手团购app8--模块

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有