首页 > 其他分享 >mvp架构

mvp架构

时间:2023-04-23 16:25:51浏览次数:43  
标签:mvp 架构 String void Override LoginContract public name

MVPHelper插件的使用

(320条消息) MVPHelper更新日志 --- 新增常规分包模式_mvp怎么分包合理_三精-大精wing的博客-CSDN博客

实例

1.LoginContractor 将三个接口合并为一个

public interface LoginContract {
    interface Model {
        void login(String name, String psw, LoginPresenter loginPresenter);
    }

    interface View {
        void shouToast(String msg);

        void onSuccess();

        String getName();

        String getPassword();

    }

    interface Presenter {
        void onSuccess();//登陆成功

        void onFailure(String msg);//登陆失败

    }
}

2.LoginModel 对数据进行校验 进行业务逻辑判断

public class LoginModel implements LoginContract.Model {
    @Override
    public void login(String name, String psw, LoginPresenter loginPresenter) {
        if (name.equals("123") && psw.equals("123")) {
            loginPresenter.onSuccess();
        } else {
            loginPresenter.onFailure("用户名或密码错误");
        }
    }
}

3.View 实现数据的获取

public class MainActivity extends AppCompatActivity implements LoginContract.View{

    EditText name;
    EditText password;
    Button login;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
    }

    private void initView() {
        name = findViewById(R.id.name);
        password=findViewById(R.id.password);
        login=findViewById(R.id.login);
        login.setOnClickListener(v -> {
            LoginPresenter presenter = new LoginPresenter();
            presenter.setView(this);
            LoginContract.Model model = new LoginModel();
            model.login(getName(), getPassword(), presenter);
        });
    }

    @Override
    public void shouToast(String msg) {
        Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onSuccess() {
        Toast.makeText(this, "登录成功", Toast.LENGTH_SHORT).show();
    }

    @Override
    public String getName() {
        return name.getText().toString();
    }

    @Override
    public String getPassword() {
        return password.getText().toString();
    }
}

4 LoginPresenter 持有view

public class LoginPresenter implements LoginContract.Presenter {
    LoginModel model;
    LoginContract.View view;

    public void setView(LoginContract.View view) {
        this.view = view;
    }

    @Override
    public void onSuccess() {
        view.onSuccess();
    }

    @Override
    public void onFailure(String msg) {
        view.shouToast(msg);
    }
}

(318条消息) android学习笔记-MVP实例_android mvp 实例_有希N的博客-CSDN博客

(320条消息) Android 使用MVPHelper工具生成,MVPDemo模拟登录演示_WL-鬼的博客-CSDN博客

标签:mvp,架构,String,void,Override,LoginContract,public,name
From: https://www.cnblogs.com/wanglongjiang/p/17346844.html

相关文章

  • 如何在X86_64系统上运行arm架构的docker容器——(异构/不同架构)CPU下的容器启动
    近期使用华为的人工智能集群,其中不仅要求异构加速端需要使用昇腾的硬件,更是要求CPU是arm架构的,因此就导致在本地x86电脑上难以对云端的arm版本的镜像进行软件安装和打包操作,为此我们需要在x86架构的本地CPU上运行arm架构的docker镜像。本文给出两种解决方式,其本质都是一样的,都是使......
  • 【IT老齐001】单体架构升级问题
    【IT老齐001】单体架构升级问题不谈场景的架构设计都是耍流氓架构没有对不对,只有合不合适架构是宏观设计的标准框架是具体实现的规则架构是取舍的艺术场景举例系统面临大量文件读写影响服务器磁盘IO导致数据库查询高延迟初级解决方案Redis通过在内存中的高吞吐完......
  • 1.4系统架构设计
    以下是一个衣服商城系统的系统架构设计:用户端:用户通过浏览器或移动客户端访问商城网站,进行浏览商品、添加购物车、下单支付等操作。服务器端:服务器端主要包括应用服务器、Web服务器和数据库服务器。应用服务器负责处理业务逻辑和交互过程,Web服务器负责响应用户请求并返回网页内......
  • 91-云原生操作系统-Kubernetes网络通信常见架构及案例解析
    VxLAN技术演进VxLAN的技术演进二层通信-基于目标mac地址通信,不可夸局域网通信,通常是由接入交换机或汇聚交换机实现报文转发。VLAN(VirtualLocalAreaNetwork)-即虚拟局域网,是将一个物理(交换机)的网络在逻辑上划分成多个广播域的通信技术,VLAN内的主机间可以直接通信,而VLAN网络外......
  • 阿里云1+X云计算开发与运维实战——使用云监控和弹性伸缩实现弹性架构设计
    实验概述本实验会自动创建2台部署了云监控插件的ECS实例。首先,配置负载均衡实例的监听配置,创建ECS实例的自定义镜像。然后,在创建弹性伸缩服务,配置报警任务,将已创建的ECS实例加入伸缩组和负载均衡实例后端。最后,增加ECS的CPU使用率达到100%,通过弹性伸缩服务,自动新建ECS实例并添加到......
  • 软件架构生态化-多角色交付的探索实践
    作者:京东零售李春丽作为一个技术架构师,不仅仅要紧跟行业技术趋势,还要结合研发团队现状及痛点,探索新的交付方案。在日常中,你是否遇到如下问题“业务需求排期长研发是瓶颈;非研发角色感受不到研发技改提效的变化;引入ISV团队又担心质量和安全,培训周期长“等等,基于此我们探索了一种......
  • 微服务架构下的核心话题 (三):微服务架构的技术选型
    前期回顾:微服务架构下的核心话题(一):微服务架构下各类项目的顺势崛起微服务架构下的核心话题(二):微服务架构的设计原则和核心话题一、前言为了实现基于微服务开发的产品,或者说为了将单体应用重构为微服务架构时,将面临着众多技术框架的选择。大公司往往会有专门的部门或团队来负......
  • bs与cs模式-java、ipBS架构和CS架构的区别
    http://m.d3zww.com/s.php 书库BS架构和CS架构的区别https://ding-doc.dingtalk.com/ 钉钉文档https://oa.dingtalk.com/ 钉钉-办公https://gitee.com/hcking/ gitee主页 https://shiniest.cn/ 博客https://weibo.com/hongchen5211314 微博主页支付接口创建订单号 ......
  • M2 arm 架构 执行x86
    查看到当前的架构uname-a切换为x86arch-x86_64zshuname-a切换回来arch-arm64zshRosetta2AppleSiliconMac系统采用了自主研发的ARMCPU,因此无法直接运行这些应用程序。Rosetta2可以将这些应用程序动态翻译为ARM代码,使其可以在新一代Mac上运行。......
  • 架构师,别再扯淡了!
    对于从事软件开发的工程们来说,都有一个成为架构师的梦想。可以说,不想当架构师的程序员,不是好的工程师,人人都想成为架构师。而为什么要成为架构师,可能每一个人都有不一样的理解和出发点。譬如,有的人觉得架构师是一个非常高大上的职位,或者架构师能够获得不错的报酬,或者架构师在行......