首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >MVP模型应该包含android特定术语吗?

MVP模型应该包含android特定术语吗?
EN

Stack Overflow用户
提问于 2019-03-13 16:48:46
回答 1查看 258关注 0票数 2

我可以在MVP视图中做逻辑上的事情,但据我所知,根据MVP模式,视图应该尽可能的愚蠢。MVP模型可以包含android特定的术语吗?如果不是,那么我如何在MVP模型中使用活动上下文?

EN

回答 1

Stack Overflow用户

发布于 2019-03-16 18:53:28

让我们假设基于MVP模式的登录功能的实现,其中模型(LoginInteractor)将使用活动上下文。

因此,我们必须实现以下类:LoginActivityLoginPresenterImplLoginInteractorImpl (作为MVP模型)。正如MVP所说,我们将在视图和演示者之间定义一个契约。我们将它们命名为LoginViewLoginPresenter。此外,我们还将为交互器类LoginInteractor定义一个接口。

LoginActivity有一个对LoginPresenter的引用,所有的逻辑都将在这里处理。在具体实现中,LoginPresenterImpl参考了LoginViewLoginInteractor。交互器的具体实现,LoginInteractorImpl将使用活动上下文来初始化特定于Android的资源,这些资源是在登录过程中收集所需数据所必需的。

这样,展示者逻辑对android资源保持不可知,并且可以轻松地进行单元测试。

示例代码片段(请注意,演示者如何只知道抽象的交互者。在视图中初始化具体的交互器,提供它的活动上下文。)

首先,我们为所有类定义契约:

代码语言:javascript
运行
AI代码解释
复制
interface LoginView {

    fun onLoginSuccess()

    fun onLoginFailed()

    fun showErrorMessage(error: String)

    //...........
}

interface LoginPresenter {

    fun proceedLogin(username: String, password: String)

    //............
}

interface LoginInteractor {

    fun getUserByUsername(username: String) : User

    fun getUserCredentials() : Credential

    //............
}

然后,它们的具体实现:

代码语言:javascript
运行
AI代码解释
复制
class LoginActivity : LoginView, AppCompatActivity() {

    private lateinit var presenter: LoginPresenter

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_login)

        // initialize presenter
        presenter = LoginPresenterImpl(
            view = this,
            interactor = LoginInteractorImpl(this)
        )

        // your code goes here
    }

    override fun onLoginSuccess() {
        // your code goes here
    }

    override fun onLoginFailed() {
        // your code goes here
    }

    override fun showErrorMessage(error: String) {
        // your code goes here
    }
}

class LoginPresenterImpl(
    private val view: LoginView,
    private val interactor: LoginInteractor
) : LoginPresenter {

    override fun proceedLogin(username: String, password: String) {
        // your custom login logic goes here
        // call interactor to get data
        // process data
        // give feedback to view
    }
}

class LoginInteractorImpl(context: Context) : LoginInteractor {

    override fun getUserCredentials() {
        // your code goes here
    }

    override fun getUserByUsername(username: String) {
        // use context to access local DB...
    }
}

注意:为了更好地分离关注点,使用依赖注入解决方案将消除由于View初始化所有其他对象而产生的问题。

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

https://stackoverflow.com/questions/55147201

复制
相关文章
【壹刊】Azure AD B2C(一)初识
  上一节讲到Azure AD的一些基础概念,以及如何运用 Azure AD 包含API资源,Azure AD 是微软提供的云端的身份标识和资源访问服务,帮助员工/用户/管理员访问一些外部资源和内部资源:
老张的哲学
2022/04/11
2.3K0
【壹刊】Azure AD B2C(一)初识
[壹刊]Azure AD(四)知识补充-服务主体
  又到了新的一周了,也到了我新的分享的时间了,还记得上一周立得Flag,其中 “保证每周输出一篇文章” ,让我特别“在意”(这里用词不太恰当)。主要是我的一个大学舍友,他突然问了我一个关于写博的事情,自己也在上周开通了账号,也想着坚持写博客。在我看来,这确实是一件好事,写博不仅仅是分享的过程;也是自己提炼写博的一个过程,以及文章组织的能力,对自己还是很有好处的。这不仅仅要写内容要精炼,同时也要让别人能看的懂。加油,默默的在这里给他打气。(ง •_•)ง
老张的哲学
2022/04/11
1.7K0
[壹刊]Azure AD(四)知识补充-服务主体
【壹刊】Azure AD(二)调用受Microsoft 标识平台保护的 ASP.NET Core Web API (上)
—————————Grant_Allen 是一位博客园新晋博主,目前开始专注于Azure方向的学习和研究,是我认识不多的、打算长时间研究Azure的群友,因此打算帮他开个专栏,同时也希望并祝愿他能一直坚持下去,学有所成。
老张的哲学
2022/04/11
1.9K0
【壹刊】Azure AD(二)调用受Microsoft 标识平台保护的 ASP.NET Core Web API (上)
【壹刊】Azure AD(三)Azure资源的托管标识
  前一周因为考试,还有个人的私事,一下子差点颓废了。想了想,写博客这种的东西还是得坚持,再忙,也要检查。要养成一种习惯,同时这也是自我约束的一种形式。虽然说不能浪费大量时间在刷朋友圈,看自媒体的新闻,看一些营销号的视频等等,不喜勿喷啊,这是我个人的一些观念,也没有带认识眼光啊!好了,废话不多说,在此先立个Flag,
老张的哲学
2022/04/11
2.2K0
【壹刊】Azure AD(三)Azure资源的托管标识
使用Azure AD B2C为ASP.NET Core 设置登录/注册
 上次关于Azure AD B2C 讲到一些概念,有介绍到,Azure AD B2C 也是一种身份验证的解决方案,但是它运行客户使用其首选的社交,企业或者本地账户标识对应用程序和API进行单一登录访问。同样,Azure AD B2C 使用基于标准的身份验证协议,包括 OpenID Connect、OAuth 2.0 和 SAML。 它与大多数第三方的 idp 进行集成。今天,介绍如何使用 Azure Active Directory B2C (Azure AD B2C) 在 ASP.NET Web 应用程序中进行用户登录和注册。 应用程序可以使用 Azure AD B2C 通过开放式标准协议对社交帐户、企业帐户和 Azure Active Directory 帐户进行身份验证。
老张的哲学
2022/04/11
1.6K0
使用Azure AD B2C为ASP.NET Core 设置登录/注册
​Microsoft Sentinel (一)服务概述与数据源配置
​Microsoft Sentinel 是可缩放的云原生安全信息与事件管理 (SIEM) 和安全业务流程自动响应 (SOAR) 解决方案。 Sentinel 在整个企业范围内提供智能安全分析和威胁情报,为攻击检测、威胁可见性、主动搜寻和威胁响应提供单一解决方案。Microsoft Sentinel 是整个企业的鸟瞰视图,可以缓解日益复杂的攻击、不断增加的警报数量以及长时间解决时间帧带来的压力。​
李珣
2022/05/07
9960
​Microsoft Sentinel (一)服务概述与数据源配置
从 Azure AD 到 Active Directory(通过 Azure)——意外的攻击路径
虽然 Azure 在某些方面利用 Azure Active Directory,但 Azure AD 角色通常不会直接影响 Azure(或 Azure RBAC)。本文详细介绍了一个已知配置(至少对于那些深入研究过 Azure AD 配置选项的人来说),Azure Active Directory 中的全局管理员(又名公司管理员)可以通过租户选项获得对 Azure 的控制权。这是“按设计”作为“打破玻璃”(紧急)选项,可用于(重新)获得 Azure 管理员权限,如果此类访问权限丢失。 在这篇文章中,我探讨了与此选项相关的危险,它当前是如何配置的(截至 2020 年 5 月)。 这里的关键要点是,如果您不仔细保护和控制全局管理员角色成员资格和关联帐户,您可能会失去对所有 Azure 订阅中托管的系统以及 Office 365 服务数据的积极控制。 注意: 围绕此问题的大部分研究是在 2019 年 8 月至 2019 年 12 月期间进行的,自那时以来,Microsoft 可能已经在功能和/或能力方面进行了更改。
Khan安全团队
2022/01/24
2.7K0
从上而下的死亡:从 Azure 到 On-Prem AD 的横向移动
Azure 攻击原语,以便更好地了解系统的工作原理、可以滥用哪些特权和权限、可能存在哪些限制以及在真实环境中存在哪些攻击路径。我一直对允许以下攻击的攻击保持警惕:
Khan安全团队
2022/01/19
2.6K0
【壹刊】Azure AD 保护的 ASP.NET Core Web API (下)
一,引言 上一节讲到如何在我们的项目中集成Azure AD 保护我们的API资源,以及在项目中集成Swagger,并且如何把Swagger作为一个客户端进行认证和授权去访问我们的WebApi资源的?本节就接着讲如何在我们的项目中集成 Azure AD 保护我们的API资源,使用其他几种授权模式进行授权认证,好了,开始今天的表演。🎉🎉🎉🎉🎉 二,正文 1,access_token的剖析!  上一篇结尾我们成功的拿到了 access_token,并且通过 access_token 验证获取到调用Api资源的
老张的哲学
2022/04/11
2.2K0
【壹刊】Azure AD 保护的 ASP.NET Core Web API (下)
CRT:一款针对Azure的CrowdStrike安全报告工具
CRT全称为“CrowdStrike Reporting Tool for Azure”,是一款针对Azure的CrowdStrike安全报告工具。该工具会在Azure AD/O365 租户中查询以下配置,并帮助广大研究人员寻找一些跟权限和配置有关的安全信息,以帮助组织更好地保护Azure环境的安全性。
FB客服
2022/04/11
9890
CRT:一款针对Azure的CrowdStrike安全报告工具
未检测到的 Azure Active Directory 暴力攻击
Azure AD 无缝单点登录 (SSO) 改善了使用 Azure AD 标识平台(例如 Microsoft 365)的服务的用户体验。配置了无缝 SSO 后,登录到其加入域的计算机的用户将自动登录到 Azure AD .
Khan安全团队
2022/01/06
1.2K0
(译)创建.NET Core多租户应用程序-租户解析
本系列博客文章探讨了如何在ASP.NET Core Web应用程序中实现多租户。这里有很多代码段,因此您可以按照自己的示例应用程序进行操作。在此过程的最后,没有对应的NuGet程序包,但这是一个很好的学习和练习。它涉及到框架的一些“核心”部分。
李明成
2020/04/07
2.5K0
在 Azure 上构建和部署云原生应用程序和容器化应用程序
在 Azure 上有许多选项可供团队构建和部署云原生应用程序和容器化应用程序。不存在适合每个用例和每个团队的完美解决方案。
张善友
2022/03/30
1.2K0
绕过应用程序白名单技巧
在内网渗透中,经常会在内网主机执行执行的渗透工具的时候出现执行不起来的情况,很多时候是由与安全软件做了白名单限制,只允许指定的白名单中的应用程序启动,这时我们就需要利用白名单中的程序做我们想做的事情,执行我们想要执行的程序,下面就给大家分享几个绕过白名单执行应用程序的姿势。
信安之路
2018/08/08
2K0
绕过应用程序白名单技巧
使用JAX-WS进行应用程序身份验证「建议收藏」
在JAX-WS中处理身份验证的常用方法之一是客户端提供“用户名”和“密码”,将其附加在SOAP请求标头中并发送到服务器,服务器解析SOAP文档并检索提供的“用户名”和“密码”从请求标头中进行,并从数据库中进行验证,或者使用其他任何方法。
全栈程序员站长
2022/09/14
1.4K0
Azure Active Directory 蛮力攻击
Azure AD 无缝单点登录 (SSO) 改进了使用 Azure AD 标识平台(例如 Microsoft 365)的服务的用户体验。配置无缝 SSO 后,登录到其加入域的计算机的用户会自动登录到 Azure AD .
Khan安全团队
2022/01/12
1.4K0
如何在 Next.js 全栈应用程序中无缝实现身份验证
本教程中,我们将一同了解如何使用 Clerk 向全栈应用程序添加身份验证机制。 我们跟 Clerk 没有任何合作关系,但对这款工具的表现非常认可。很多朋友正好咨询怎么在 Next.js 下实现身份验证,这篇文章专为解决问题而来。
深度学习与Python
2023/09/08
1.3K0
如何在 Next.js 全栈应用程序中无缝实现身份验证
Kerberos 身份验证在 ChunJun 中的落地实践
Kerberos,在古希腊神话故事中,指的是一只三头犬守护在地狱之门外,禁止任何人类闯入地狱之中。
袋鼠云数栈
2022/12/16
1.7K0
绝了!这7种工具可以监控AD(Active Directory)的健康状况
全球大约72%的企业使用 Microsoft Windows 服务器操作系统 (OS),每台服务器都使用 Active Directory 将用户相关数据和网络资源存储在域中。
网络技术联盟站
2023/03/13
4.2K0
绝了!这7种工具可以监控AD(Active Directory)的健康状况
【应用安全】什么是联合身份管理?
介绍 联合身份管理是一种可以在两个或多个信任域之间进行的安排,以允许这些域的用户使用相同的数字身份访问应用程序和服务。这称为联合身份,使用这种解决方案模式称为身份联合。 联合身份管理建立在两个或多个域之间的信任基础之上。例如,信任域可以是合作伙伴组织、业务单位、子公司等。 在当今的任何数字组织中,身份和访问管理 (IAM) 是一项专门的功能,委托给称为身份代理的服务提供商。这是一项专门在多个服务提供商之间代理访问控制的服务,也称为依赖方。联合身份管理是跨组织的两个或多个提供者之间做出的安排。 根据身份代理
架构师研究会
2022/03/21
1.9K0

相似问题

Azure AD应用程序权限与委派权限

20

多租户Azure AD身份验证权限错误

11

如何在使用Azure AD身份验证的多租户应用程序中限制租户

115

Azure AD应用程序角色授权:租户管理员委派

11

Azure AD多租户权限

31
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档