深入理解 Android 架构 Clean Architecture(补充篇)

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

深入理解 Android 架构 Clean Architecture(补充篇),Clean Architecture,架构,android,kotlin,android-studio,android jetpack
在前两篇的介绍篇和解析篇中,我们已经对 Clean Architecture 的核心思想和层次结构进行了初步了解。然而,我发现遗漏了部分知识点,本篇将逐一讲解补充,最后介绍项目实践。

架构图的提炼

在介绍篇中提到的关于 Clean Architecture 图解,其实每一层中都包含了一些我们不需要的东西,因为该架构是一个通用的架构思想,所以在去除掉一些无关的内容后
示例图如下:
深入理解 Android 架构 Clean Architecture(补充篇),Clean Architecture,架构,android,kotlin,android-studio,android jetpack

数据层中的模型(Model)

数据层不仅由 Repository、DataSource组成,还包含数据模型(Models)。其中模型(Models)扮演着重要的角色。模型是数据层的组成部分,负责表示和处理应用程序中的数据。

Models 定义了应用程序中的数据结构,包括实体的属性、关系等。这可以是网络请求的数据格式、数据库表的映射。

在接口适配器层和用例层之间(绿色与红色),模型可能需要进行数据转换,以适应不同层次之间的需求。这可以包括将数据库实体映射为用例需要的 Domain Model(领域实体)等。

示例:

//网络模型
data class User(
  val name:String,
  val age:Int,
  val gender:Int
  ...
)

//数据库模型
@Entity
data class Note(
  val title:String,
  val content:String,
  val timestamp:Long
  ...
)

SOLID原则

SOLID 也是 Uncle Bob 提出的一组设计原则,旨在帮助开发者创建可维护、灵活且易于理解的软件架构,在Clean Architecture 架构中也遵循了这一原则。

  • 单一职责原则:一个类应该只有一个引起变化的原因。这意味着一个类应该只负责一种类型的任务,它应该只有一个责任。
  • 开闭原则:软件实体(类、模块、函数等)应该对扩展是开放的,但对修改是封闭的。这意味着可以通过添加新功能来扩展系统,而无需修改现有代码。
  • 里氏替换原则:子类型必须能够替换掉它们的父类型,而不影响程序的正确性。
  • 接口隔离原则:不应该强迫一个类实现它用不到的接口。应该为客户端提供他们需要的接口,而不强迫他们依赖他们不需要的接口。
  • 依赖反转原则:高层次的模块不应该依赖于低层次的模块,二者都应该依赖于抽象。抽象不应该依赖于具体实现,而具体实现应该依赖于抽象。

总结

Clean Architecture 提供了一种强大的软件设计理念,其核心思想是通过分层和分离关注点的方式构建可维护、可测试和可扩展的软件系统。将系统分为实体、用例、接口适配器和框架与驱动器四个层次,每个层次有着清晰的责任和依赖规则。这样的结构确保了业务逻辑的纯粹性,使得系统内核独立于外部细节。同时,Clean Architecture 强调了 SOLID 原则的应用,进一步提升了代码的灵活性和可维护性。

这里推荐一个示例项目 SocialNetworkApp,该项目应用了干净架构并使用 Jetpack Compose + MVI实现,通过该示例可以更好的学习干净架构在 Android 中的应用以及每一层的职责体现,欢迎 Star !

源码地址:https://github.com/AAnthonyyyy/SocialNetworkApp


最后,可以关注一下本人的公众号,会不定期发布一些关于 Android、Kotlin、Jetpack Compose相关的学习笔记和知识。

深入理解 Android 架构 Clean Architecture(补充篇),Clean Architecture,架构,android,kotlin,android-studio,android jetpack文章来源地址https://www.toymoban.com/news/detail-778847.html

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

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

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

相关文章

  • Android Architecture Components ——LiveData使用,android热修复视频

    小结:getApplication()即是全局的上下文 Activity中进行数据监听 import android.arch.lifecycle.MutableLiveData; import android.arch.lifecycle.Observer; import android.arch.lifecycle.ViewModelProviders; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log;

    2024年04月17日
    浏览(45)
  • 编程框架概述:MVC, MVP, MVVM, Flux/Redux, 和 Clean Architecture

            在软件开发中,选择合适的编程框架和架构模式对于构建可维护和可扩展的应用程序至关重要。初学者在面对多种架构选项时可能会感到困惑。本文将详细介绍五种流行的编程框架:MVC、MVP、MVVM、Flux/Redux和Clean Architecture。 MVC是一种将应用程序分为三个核心组件的架

    2024年01月20日
    浏览(55)
  • Android Architecture Components ——LiveData使用

    @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_live_data); } @Override public void onAttachedToWindow() { super.onAttachedToWindow(); viewModel = ViewModelProviders.of(this).get(LiveDataViewModel.class); MutableLiveData liveData = viewModel.getLiveData(); liveData.observe(th

    2024年04月27日
    浏览(38)
  • Android Architecture Components ——lifecycle 使用

    Log.d(TAG, \\\"onStop: \\\"); } @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY) public void onDestroy() { Log.d(TAG, \\\"onDestroy: \\\"); } /** 此方法可以有参数,但类型必须如两者之一(LifecycleOwner owner,Lifecycle.Event event) 此方法在所以得生命周期都执行一遍 */ @OnLifecycleEvent(Lifecycle.Event.ON_ANY) public void onAny() { Log.d(TAG,

    2024年04月23日
    浏览(39)
  • Android HAL机制的深入理解及在Linux上移植和运行的一个好玩的HAL小例子

    PS:要转载请注明出处,本人版权所有。 PS: 这个只是基于《我自己》的理解, 如果和你的原则及想法相冲突,请谅解,勿喷。 环境说明   Ubuntu 18.04.x   近一年来,虽然还是做的是AIOT相关的事情,但是某些事情却发生了一些变化。随着个人的阅历提升,现在的AI在边缘端

    2023年04月08日
    浏览(46)
  • Android Architecture Components 只看这一篇就够了

    1.3、主要架构 1.4、使用组件 在项目根目录 build.gradle 文件添加仓库依赖: allprojects { repositories { jcenter() google() } } 如果遇到如下因 gradle 版本导致的编译失败问题: Error:(6, 1) A problem occurred evaluating root project ‘TestArc’. Could not find method google() for arguments [] on repository container;

    2024年04月13日
    浏览(39)
  • 探秘Awesome-Android-Architecture:构建高效安卓应用的秘密武器

    项目地址:https://gitcode.com/JsonChao/Awesome-Android-Architecture 在快速发展的移动应用领域,高效的安卓应用开发至关重要。为了帮助开发者们更好地理解和实践先进的架构模式,我们向您推荐一个开源项目——Awesome-Android-Architecture。该项目由 JsonChao 创建并维护,它是一个集合了各种

    2024年04月16日
    浏览(55)
  • 【Android开发基础】计算器逻辑层代码补充

    描述:关于六月十二日发表的博客【Android开发基础】SQLite开发复刻通讯录、记事本、计算机,有粉丝向我问最后面的计算器作业有没有逻辑层的代码,这里我会给出具体代码。 难度:初级 效果 1、案例 对于初学者或算法不好的朋友,我觉得有必要先要看一下这样的一个计算

    2024年02月10日
    浏览(48)
  • 深入理解MVVM架构模式

    原文合集地址如下,有需要的朋友可以关注 本文地址 MVVM是一种用于构建用户界面的软件架构模式,它的名称代表着三个组成部分:Model(模型)、View(视图)和ViewModel(视图模型)。MVVM的主要目标是将应用程序的UI与其底层数据模型分离,通过数据绑定实现数据和UI的自动

    2024年02月12日
    浏览(33)
  • 05. 深入理解 GPT 架构

    在本章的前面,我们提到了类 GPT 模型、GPT-3 和 ChatGPT 等术语。现在让我们仔细看看一般的 GPT 架构。首先,GPT 代表生成式预训练转换器,最初是在以下论文中引入的: 通过生成式预训练提高语言理解 (2018) 作者:Radford 等人,来自 OpenAI,http://cdn.openai.com/research-covers/lang

    2024年01月22日
    浏览(36)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包