Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么我们要在Android的MVP模式中使用界面呢?

为什么我们要在Android的MVP模式中使用界面呢?
EN

Stack Overflow用户
提问于 2019-03-23 22:52:03
回答 2查看 1.1K关注 0票数 5

我第一次用Kotlin做了一个Android应用程序,使用MVP模式。我的问题是,为什么当Kotlin提供更高级的函数时,我需要视图和演示器的接口?我们就不能用这些高阶函数来交流吗?没有接口的模式使用不好吗?

我看过很多文章和教程,但没有回答我的问题。我在下面的代码中所做的是不是一个错误的实践?有人能给我解释一下吗?

在我的活动中

代码语言:javascript
运行
AI代码解释
复制
override fun init() {

    btn_login.setOnClickListener {
        LoginPresenter.userLogin(et_emailAddress.text.toString(),et_password.text.toString()){
            if (it){
                //do something
            }else{
                //do something
            }
        }
    }
}

我的演讲者

代码语言:javascript
运行
AI代码解释
复制
object LoginPresenter {

fun userLogin(emailId: String, password: String, completion: (Boolean) -> Unit) {
    //do something
    completion(true)
 }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-24 06:49:33

为什么我需要视图和演示器的接口,因为Kotlin提供了更高级的函数?

这是软件开发中比较常见的一种做法。虽然您可能不使用接口,但是有许多要点说明了为什么接口更可取。从我的头顶上:

  1. 有了接口,您就可以拥有多个实现,而不必真正关心具体的实现类型。这就是高阶函数所缺少的--在使用LoginPresenter方法时,您受到唯一类型LoginPresenter.userLogin()的限制。
  2. 大多数设计模式基于接口与其实现的分离。因此,将程序设计成实现而不是抽象不会让您利用这些。
  3. 您将无法正确地对依赖于其他实现的单元测试类进行单元测试,因为在这种情况下不可能进行模拟。
  4. 通过具体的实现,代码维护和扩展变得更加困难。
票数 1
EN

Stack Overflow用户

发布于 2019-03-23 23:54:57

  1. 高阶函数代价 关于高阶函数费用的Kotlin正式文件 使用高阶函数会造成一定的运行时惩罚:每个函数都是一个对象,它捕获一个闭包,即函数正文中访问的那些变量。内存分配(包括函数对象和类)和虚拟调用都会带来运行时开销。

如果你用高阶函数替换你的所有接口,你的性能可能会很差。

  1. 接口可以容纳多个函数,在使用高阶函数时,需要单独的函数参数。考虑以下情况,
代码语言:javascript
运行
AI代码解释
复制
interface UserLoginInterface {
      fun onLoginSuccess(loggedInUser: User)
      fun onLoginFailure(error: ErrorResponse)
      fun onRedirect(someOtherObjectWithDirectives: SomeDataClass)
 }

要将其转换为高阶函数用法,您必须使用三个函数参数

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55321400

复制
相关文章
Pentaho BI Server 批量上传文件排坑笔记
本文讲的是实际操作中的小问题和小技巧, 这里要谈谈Pentaho BI Server对文件夹的操作,在项目使用pentaho cde图表开发完图表后,通常会迁移cde图表文件来完成开发与部署不同环境下的图表迁移,在迁移过程中发现BI Server可以对Pentaho中文件夹进行下载,
ZhangXianSheng
2019/05/28
7660
6个用于大数据分析的最好工具
大数据是一个含义广泛的术语,是指数据集,如此庞大而复杂的,他们需要专门设计的硬件和软件工具进行处理。该数据集通常是万亿或EB的大小。这些数据集收集自各种各样的来源:传感器,气候信息,公开的信息,如杂志,报纸,文章。大数据产生的其他例子包括购买交易记录,网络日志,病历,军事监控,视频 和图像档案,及大型电子商务。
IT阅读排行榜
2018/08/15
1.2K0
6个用于大数据分析的最好工具
【性能分析】大数据分析工具
大数据是一个含义广泛的术语,是指数据集,如此庞大而复杂的,他们需要专门设计的硬件和软件工具进行处理。该数据集通常是万亿或EB的大小。这些数据集收集自各种各样的来源:传感器,气候信息,公开的信息,如杂志,报纸,文章。大数据产生的其他例子包括购买交易记录,网络日志,病历,军事监控,视频和图像档案,及大型电子商务。
Luga Lee
2022/03/25
1.2K0
【性能分析】大数据分析工具
大数据处理分析的六大工具
下面请看详细介绍: Hadoop Hadoop 是一个能够对大量数据进行分布式处理的软件框架。但是 Hadoop 是以一种可靠、高效、可伸缩的方式进行处理的。Hadoop 是可靠的,因为它假设计算元
用户1410343
2018/03/27
3.1K0
大数据处理分析的六大工具
6个用于大数据分析的最好工具
大数据是一个含义广泛的术语,是指数据集,如此庞大而复杂的,他们需要专门设计的硬件和软件工具进行处理。该数据集通常是万亿或EB的大小。这些数据集收集自各种各样的来源:传感器,气候信息,公开的信息,如杂志,报纸,文章。大数据产生的其他例子包括购买交易记录,网络日志,病历,军事监控,视频和图像档案,及大型电子商务。 在大数据和大数据分析,他们对企业的影响有一个兴趣高涨。大数据分析是研究大量的数据的过程中寻找模式,相关性和其他有用的信息,可以帮助企业更好地适应变化,并做出更明智的决策。 一 Hadoop Hadoo
小莹莹
2018/04/20
1.1K0
6个用于大数据分析的最好工具
【工具】六大工具帮你做好大数据分析
大数据是一个含义广泛的术语,是指数据集,如此庞大而复杂的,他们需要专门设计的硬件和软件工具进行处理。该数据集通常是万亿或EB的大小。这些数据集收集自各种各样的来源:传感器、气候信息、公开的信息、如杂志、报纸、文章。大数据产生的其他例子包括购买交易记录、网络日志、病历、事监控、视频和图像档案、及大型电子商务。大数据分析是在研究大量的数据的过程中寻找模式,相关性和其他有用的信息,可以帮助企业更好地适应变化,并做出更明智的决策。 Hadoop Hadoop 是一个能够对大量数据进行分布式处理的软件框架。但是
小莹莹
2018/04/20
9960
【工具】六大工具帮你做好大数据分析
6个用于大数据分析的最好工具
大数据是一个含义广泛的术语,是指数据集,如此庞大而复杂的,他们需要专门设计的硬件和软件工具进行处理。该数据集通常是万亿或EB的大小。这些数据集收集自各种各样的来源:传感器,气候信息,公开的信息,如杂志,报纸,文章。大数据产生的其他例子包括购买交易记录,网络日志,病历,军事监控,视频和图像档案,及大型电子商务。
IT阅读排行榜
2018/08/13
7130
6个用于大数据分析的最好工具
RocketMQ服务器及管理控制台安装 [中奖名单]
进入bin目录,建议修改runbroker.sh和runserver.sh默认JVM的大小,防止内存不足启动失败。参考设置如下
BUG弄潮儿
2020/11/19
1.6K0
RocketMQ服务器及管理控制台安装 [中奖名单]
DELL服务器iDRAC远程访问管理控制台使用
戴尔远程访问控制器(DRAC-Integrated Dell Remote Access Controller6 )控制台是管理站软件,旨在提供适用于戴尔系统的远程管理功能, 是一种系统管理硬件和软件解决方案,
全栈工程师修炼指南
2022/09/29
24.1K0
DELL服务器iDRAC远程访问管理控制台使用
dubbo管理控制台
1、在github下载dubbo源码 https://github.com/alibaba/dubbo
week
2018/08/24
2.1K0
dubbo管理控制台
pentaho中Invalid byte
上网一查,说是有中文,字体不相符,可是我没有写中文,为了能继续往后进行,修改了如下文件
py3study
2020/01/07
6180
pentaho8.1安装
本文主要介绍pentaho8.1的安装过程,重点介绍pentaho-server的安装。
Java架构师必看
2021/05/14
8960
pentaho8.1安装
大数据可视化项目开发总纲
下载地址:www.oracle.com/cn/downloads/index.html
ZhangXianSheng
2019/05/28
1.5K0
Dubbo03【管理控制台和监控中心搭建】
源码下载与编译   要搭建管理控制台和监控中心我们首先需要下载dubbo的源码并编译,首先去GitHub上下载Dubbo源码: https://github.com/apache/incubator
用户4919348
2019/04/02
1.1K0
Dubbo03【管理控制台和监控中心搭建】
7.Sentinel源码分析—Sentinel是怎么和控制台通信的?
在看我的这篇文章之前大家可以先看一下官方的这篇文章:https://github.com/alibaba/Sentinel/wiki/%E6%8E%A7%E5%88%B6%E5%8F%B0。介绍了控制台怎么使用,以及客户端要怎么设置才能被收集数据。
luozhiyun
2019/09/30
1.1K0
7.Sentinel源码分析—Sentinel是怎么和控制台通信的?
7.Sentinel源码分析—Sentinel是怎么和控制台通信的?
在看我的这篇文章之前大家可以先看一下官方的这篇文章:https://github.com/alibaba/Sentinel/wiki/%E6%8E%A7%E5%88%B6%E5%8F%B0。介绍了控制台怎么使用,以及客户端要怎么设置才能被收集数据。
luozhiyun
2019/09/28
9210
Cloudera Manager管理控制台
Cloudera Manager是一个用于管理、配置和监控CDP私有云基础集群和Cloudera Runtime服务的应用程序。
大数据杂货铺
2020/11/25
3K0
Cloudera Manager管理控制台
Jconsole-java监视和管理控制台的使用
Jconsole 监控java程序时,在启动java程序时,加上以下选项就可以进行远程监控:
yawn
2019/10/12
1.1K0
Jconsole-java监视和管理控制台的使用
Cloudera Manager管理控制台
Cloudera Manager管理控制台(Cloudera Manager Admin Console)是一个基于Web的用户界面,用于配置,管理和监控CDH。
Fayson
2018/03/30
4.8K0
「集成架构」ETL工具大比拼:Talend vs Pentaho
数据总是巨大的,任何行业都必须存储这些“数据”,因为它带有巨大的信息,从而导致他们的战略规划。正如人们需要房子感到安全一样,数据也必须得到保障。这个数据主页在技术上称为数据仓库。
架构师研究会
2019/09/08
2.3K0

相似问题

带有express的nodejs :每个视图的变量

10

Express - Nodejs - HTTPS服务器

10

将nodejs express静态请求重定向到https

480

Nodejs将服务器HTTP更改为HTTPS

12

NodeJS/Express自动检测SSL通过HTTP (HTTPS)解释?

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文