Android 架构模式

这篇具有很好参考价值的文章主要介绍了Android 架构模式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.三个基本架构

在Android中,开发架构就是描述视图层、逻辑层、数据层三者之间的关系和实施。

Android中有3个基本的架构模式。

①MVC(Model-View-Controller)

Model:模型层,代表数据模型,用于获取和存储数据。

View:视图层,即呈现给用户的UI,即xml布局文件。

Controller:控制层,负责处理用户与app之间的交互,包含业务逻辑。是Model与View的桥梁,用来控制程序的流程,比如Activity/Fragment。

View层接收到用户操作事件,通知到Controller进行对应的逻辑处理,然后通知Model去获取/更新数据,Model再把新的数据通知到View更新界面。这就是一个完整MVC的数据流向。

Android 架构模式

但在Android中,因为xml布局能力很弱,View的很多操作是在Activity/Fragment中的,而业务逻辑同样也是写在Activity/Fragment中。

所以,MVC的缺点如下:

1)Activity/Fragment责任不明,同时负责View、Controller,就会导致其代码量大,不满足单一职责。

2)Model耦合View,View的修改会导致Controller和Model都进行改动,不满足最少知道原则。

②MVP(Model-View-Presenter)

Model:模型层,代表数据模型,包括数据和一些业务逻辑,即数据的结构定义、数据的存储和获取等。

View:视图层,即呈现给用户的UI,并且负责与客户进行交互。包括Activity/Fragment。

Presenter:主持者,负责业务逻辑。Presenter通过View接收用户的输入,然后在Model的帮助下处理用户的数据并将结果传递回View。Presenter通过接口与View进行通信。接口在presenter类中定义,它传递所需的数据。Activity/Fragment及其他View视图组件实现此接口获得他们想要的数据并呈现数据。

View层接收用户操作事件,通知到Presenter,Presenter进行逻辑处理,然后通知Model更新数据,Model把更新的数据给到Presenter,Presenter再通知到View更新界面。

Android 架构模式

MVP的实现思路:UI逻辑抽象成IView接口,由具体的Activity实现类来完成,并调用Presenter进行逻辑操作。业务逻辑抽象成IPresenter接口,由具体的Presenter实现类来完成。逻辑操作完成后调用IView接口方法刷新UI。

MVP本质是面向接口编程,实现了依赖倒置原则。

MVP解决了MVC的问题:

1)View责任明确,逻辑不再写在Activity中,而是在Presenter中;

2)Model不再持有View,将View与Model解耦。

但是MVP并没有解决代码耦合的问题,View和Presenter之间相互持有。

所以MVP的缺点如下:

1)会引入大量的IView、IPresenter接口,增加实现的复杂度。

2)View和Presenter相互持有,形成耦合。

3)Presenter如果持有Activity等的引用,容易出现内存泄露问题。

③MVVM(Model-View-ViewModel)

Model:模型层,代表数据模型,包括数据和一些业务逻辑,即数据的结构定义、数据的存储和获取等。

View:视图层,即呈现给用户的UI,并且负责与客户进行交互。比如XML/Activity/Fragment。

ViewModel:视图模型,负责业务逻辑。它解决了MVP的问题,使ViewModel和View之间不再依赖接口通信,而是通过LiveData、RxJava、Flow等响应式开发的方式来通信,即将数据以可观察对象的形式提供给View,View和ViewModel层分离,ViewModel不应该知道与之交互的View是什么。

在MVVM中View持有ViewModel,View产生事件,使用ViewModel进行逻辑处理后,通知Model更新数据,Model把更新的数据给ViewModel,ViewModel自动通知View更新界面,而不是主动调用View的方法。

Android 架构模式

MVVM的本质是数据驱动,把解耦做的更彻底,viewModel不持有view 。

在MVVM中View持有ViewModel,但ViewModel得不到任何关于View的信息。所以View与ViewModel之间存在着一对多的关系,一个View可以持有多个ViewModel。MVVM是MVP模式的一个优化。

 

2.三个架构模式举例

分别用MVC、MVP、MVVM模式实现一个用户登录的功能。

①MVC

Android 架构模式

 (1)Controller层:

public class MvcLoginActivity extends AppCompatActivity {

    private EditText userNameEt;

    private EditText passwordEt;

    private User user; //view层依赖了Model层

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView( R.layout.activity_login);

        user = new User();

        userNameEt = findViewById(R.id.name);

        passwordEt = findViewById(R.id.pwd);

        Button loginBtn = findViewById(R.id.lgin);

        loginBtn.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View view) {

                login( userNameEt.getText().toString(), passwordEt.getText().toString());

            }

        });

    }

    private void login(String userName, String password) {

        if (userName.equals("admin") && password.equals("123")) { //业务逻辑

            user.setUserName(userName);

            user.setPassword(password);

            Toast.makeText(this, userName + " Login Successful", Toast.LENGT文章来源地址https://www.toymoban.com/news/detail-465567.html

到了这里,关于Android 架构模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android安卓架构MVC、MVP、MVVM模式的概念与区别

    目录 MVC框架 MVP框架 MVVM框架 MVVM与MVP区别 MVVM与MVC区别 MVC、MVP、MVVM模式哪个要好一些 MVC(Model-View-Controller)、MVP(Model-View-Presenter)、MVVM(Model-View-ViewModel)是三种常见的软件架构模式,它们的目的都是将应用程序的不同部分分离开来,以提高代码的可维护性、可扩展性和可

    2024年02月21日
    浏览(64)
  • Qemu虚拟arm开发板驱动开发详解(一)——驱动基本架构

            此前在《WSL2下Ubuntu22.04使用Qemu搭建虚拟Vexpress-A9开发板》系列文章中,我们已建立好Linux最小系统的运行环境,并将其成功移植到了由Qemu模拟的arm32开发板上。接下来将介绍如何基于上述环境进行驱动开发。         本节主要带各位读者了解Linux内核驱动的基本架

    2024年02月05日
    浏览(47)
  • .net 软件开发模式——三层架构

    三层架构是一种常用的软件开发架构模式,它将应用程序分为三个层次: 表示层、业务逻辑层和数据访问层 。每一层都有明确的职责和功能,分别负责用户交互、业务处理和数据存储等任务。这种架构模式的优点包括易于维护和扩展、更好的组织结构和代码重用性、更高的

    2024年02月10日
    浏览(55)
  • 解锁Android开发利器:MVVM架构

    作者:潜行中的小角色 作为Android开发者,我们都希望能够开发出高效、可维护和可测试的应用。而MVVM(Model-View-ViewModel)架构正是我们的得力助手。在本文中,我将详细介绍MVVM架构的原理和流程,并通过一个示例演示如何使用MVVM进行应用开发。让我们一起解锁Android开发的

    2024年02月13日
    浏览(83)
  • Android-NDK开发——基本概念

    在Android开发中,有时候出于安全,性能,代码共用的考虑,需要使用C/C++编写的库。虽然在现代化工具链的支持下,这个工作的难度已经大大降低,但是毕竟万事开头难,初学者往往还是会遇到很多不可预测的问题。本篇就是基于此背景下写的一份简陋指南,希望能对刚开始编

    2024年02月09日
    浏览(40)
  • Android MVI架构之UI开发指南

    在整个应用程序架构中,UI层并不是唯一的层级。除了UI层之外,您还可以找到数据层,有时还有领域层。根据Android架构文档: UI层在屏幕上显示数据。 数据层暴露应用程序数据,并包含大部分业务逻辑。 领域层是一个可选的层,旨在简化和重用UI层的潜在业务逻辑复杂性。

    2024年02月03日
    浏览(42)
  • MVC设计模式、JSP开发模式、三层架构&MVC练习学生信息管理系统

    本文将介绍MVC设计模式、JSP开发模式、三层架构和MVC练习的基本概念,并演示如何使用这些技术来构建一个学生信息管理系统。该系统将包括数据库准备、查询、增加、删除、更新和分页功能。 MVC是一种软件架构模式,将应用程序分为三个部分:模型(Model)、视图(View)和

    2023年04月25日
    浏览(94)
  • Android应用开发(4)视图布局基本属性

    Android应用开发学习笔记——目录索引 本章介绍视图(View)的基本概念及其用法,包括:如何设置视图的宽度和高度,如何设置视图的外部间距和内部间距,如何设置视图的外部对齐方式和内部对齐方式等。 在Android中,什么是视图(View)?View是Android中所有控件的基类,不

    2024年02月03日
    浏览(47)
  • RK3568平台 Android13 GKI架构开发方式

    GKI:Generic Kernel Image 通用内核映像。 Android13 GMS和EDLA认证的一个难点是google强制要求要支持GKI。GKI通用内核映像,是google为了解决内核碎片化的问题,而设计的通过提供统一核心内核并将SoC和板级驱动从核心内核移至可加载模块中。核心内核为驱动模块提供了稳定的内核模块

    2024年02月04日
    浏览(54)
  • Golang三个编译基本命令

    在运行Go语言程序之前,先要将其编译成二进制的可执行文件 我们通常在编辑器编写完源码后使用go build或go run命令对GO语言程序进行编译 作用:将Go语言程序和相关依赖编译成可执行文件 语法格式:go build 【参数】 fileName 参数: fileName为所要编译的文件名,可以是一个或多

    2024年02月02日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包