• Stars
    star
    113
  • Rank 310,115 (Top 7 %)
  • Language
    Java
  • License
    Apache License 2.0
  • Created over 7 years ago
  • Updated over 6 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

🌇该项目结合 MVP 与 Clean 架构思想,探索在 Android 项目上的最佳实践。

Android Architecture

概述

该项目结合 MVP 与 Clean 架构思想,探索在 Android 项目上的最佳实践。

遵循 Clean Architecture 的原则。

architecture

  • 数据层(Data Layer):加入数据转换层(Mapper)将服务端数据模型(Entity)与本地数据模型(Model)解耦。
  • 业务层(Domain Layer):按模块划分业务,具体业务交给 Usecase 处理。
  • 显示层(View Layer): Presenter 不再与 Activity/Fragment 一一对应,Presenter 按照业务模块划分功能,大大提高 Presenter 的复用性。Activity/Fragment 中可以实现多个 View,持有多个 Presenter 来完成业务逻辑。

示例

分支 描述
master 演示了 Model-View-Presenter(MVP)+ Clean 架构,提供一些基类,状态栏沉浸适配等
develop 使用 butterknife
develop-dagger 加入 dagger 的支持
develop-dagger-rxjava 加入 rxjava 的支持

数据层(Data Layer)

data.png

数据层(Data Layer)主要是数据获取与数据缓存策略的处理。

比如:第一次获取到数据,缓存到持久层(持久层可以放入数据库,SharedPreferences,文件或者其他形式)和内存中;第二次获取数据时应优先从内存中读取,其次是持久层,若本地缓存失效则直接从远程服务端获取,然后缓存到本地。

具体实现参见 UserRepository

业务层(Domain Layer)

domain-data

业务层(Domain Layer)主要是根据业务需求来操作数据的逻辑。业务层将每条需求交个 Usecase 来处理,Usecase 通过 Repository 来获取数据。业务层与数据层解耦,方便扩展与测试。

具体实现参见 LoginRemoteTask

显示层(View Layer)

view-domain

显示层(View Layer)主要是数据的展示与更新操作。显示层通过 Presenter 与业务层交互,Activity / Fragment 与 Presenter 解耦,将业务实现由 Presenter 组合而成。Presenter 与 View 对应,Activity / Fragment 由多个 View 管理。

具体实现参见 LoginActivity

项目结构

architecture

参考资料

扫一扫关注我的公众账号

关于我

如果对你有帮助,请 star 一下,然后 follow 我,给我增加一下分享动力,谢谢!

如果你有什么疑问或者问题,可以提交 issue 和 request,发邮件给我 [email protected]

或者加入下面的 QQ 群来一起学习交流。

Android技术进阶:386463747

License

Copyright 2016 jeanboy

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

More Repositories

1

Android-ReadTheFuckingSourceCode

😜 记录日常的开发技巧,开发中遇到的技术重点、难点,各个知识点的总结,优质面试题等等。持续更新...
HTML
2,309
star
2

Android-BitherCompress

📷Android图片压缩解决方案。
Java
452
star
3

Android-LuckyMonkeyPanel

🐯🎮幸运转盘,类似老虎机的抽奖活动效果。
Java
404
star
4

Android-RadarView

🎯雷达图,类似支付宝芝麻分解读,王者荣耀对战资料图。
Java
204
star
5

Android-LineChart

📈一个简单的折线,贝塞尔曲线图表控件,高度可扩展,支持动态显示。
Java
189
star
6

Android-CityList

城市列表选择,类似美团城市选择
Java
78
star
7

Android-JNITest

Android Studio JNI environment.
Java
63
star
8

Android-CropView

Android兼容行很强很方便的图片裁切库,几行代码就可实现拍照裁切,选择图片裁切,支持旋转,自定义比例。
Java
59
star
9

Android-WheelFortune

🤡幸运抽奖转盘,类似于StarMaker直播间抽奖。
Kotlin
57
star
10

Android-Flavors

该项目演示了在 Android Studio 中使用 gradle 构建渠道包。
Java
55
star
11

Android-RecyclerViewHelper

RecyclerView的工具类,更方便的实现Adapter,item点击事件,更快的实现加载提示,分页加载。
Java
31
star
12

Android-SearchView

动感十足的搜索加载View。
Java
19
star
13

WebApp-Arch

✌️😋✌️ 微信小程序 与 支付宝小程序 快速开发框架,可实现一套逻辑代码两个平台运行。
JavaScript
9
star
14

Android-GooglePay

Java
4
star
15

Android-HookTraining

Java
2
star
16

Android-GradlePluginTest

Gradle 插件学习项目
Java
2
star
17

CustomViewDemo

Customize view demo project
Java
2
star
18

Android-MVP-Demo

An android demo based on the MVP.
Java
2
star
19

Android-LocationHelper

Java
1
star
20

Android-Performance

Java
1
star
21

Android-AIDLTest

Java
1
star
22

Android-ScreenSupport

Java
1
star
23

Android-PokemonLayout

Java
1
star
24

Converter

Javabean 转换工具
Java
1
star
25

Android-DaemonTest

Java
1
star
26

Android-FontTextView

Java
1
star