DesignResCollection

提供一个 APP 的不同架构实现
授权协议 GPL
开发语言 Java
所属分类 手机/移动开发、 手机开发包
软件类型 开源软件
地区 国产
投 递 者 耿和韵
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

DesignResCollection

提供同一个 App 的不同架构实现,对其进行对比分析,方便大家选取使用
项目启发来自谷歌的同类框架项目 https://github.com/googlesamples/android-architecture

为什么要做这样一个项目

Android 的框架多用 MVC 模型进行开发,而其中的 Activity 经常承担了大量的 V 和 C 的工作,既处理逻辑又处理 UI。
因此 Activity 中很容易聚集大量代码,造成结构复杂混乱、测试维护困难等诸多不便。

这个项目就是为了帮助解决这个问题。其中将提供一个相同的应用程序,然后使用不同的框架实现之。

您可以使用本项目中的示例代码作为参考,或者直接作为项目的架子在此之上继续开发自己的项目。
本项目中,主要关注的重点在于代码的结构框架、测试以及可维护性。
但是要注意,这里提供了不同的架构,各自有自己的优缺点。因此在选取时要根据自己的需要选择对应的框架结构。
比如你只是一个简单的 App,不需要单元测试,功能UI都比较少,那直接 MVC 结构即可。

代码示例 [持续开发中...]

显示设计网站中收集来的资源的一个应用 DesignResCollection,不同结构对应不同的[_结构后缀]。
比如基本的 MVP 结构就是 DesignResCollection_MVP。不同结构的具体介绍请查看对应文件夹中的README.md

已开发完成的示例

待开发的示例

其他相关示例

  • DesignResCollection(ing...) - 完整App代码,不断丰富完善中,实现一个最终完整版。本项目中的示例是基于此项目做了功能和页面上的精简,便于演示不同代码结构。

  • DesignCollectionCloudEngine - 部署在LeanCloud上的云代码项目,用于定时爬取数据保存到LeanCloud中为应用提供数据来源的。

开发计划

2016.8.17~
DesignResCollection_MVP/ - Model-View-Presenter 结构。

通用依赖框架

  • 使用 LeanCloud 作为后端服务,比较简单,无需自行开发。

  •  使用 LeanCloud 的 Restful-API 接口。(不用 LeanCloud 的 Android SDK,更贴近于实际开发中用开发接口文档的情景)

  • 网络框架部分使用 Retrofit2.0 + RxJava。

  •  图片使用 Glide。

  • 代码助手Model 常见工具类、功能等都封装到了这个依赖 Model 中,一来为了方便,二来让注意力更集中在项目框架结构上。

到底使用哪种框架使用在我自己的 app 中?

每个框架示例中都有一个 README,你可以先查看下每种的特点。
最终项目里还会对比下所有框架的优缺点列出来,方便你根据自己具体情况进行全面的比较选取。

应用截图

使用

下载~ 解压~ Open对应框架项目的文件夹

 相关资料
  • 我正在按照本教程将 Graphql 与 Django 集成,当我在本地机器上点击 graphql URL 时,我根据该教程执行了所有操作 http://localhost:8000/graphql 我得到以下错误 断言错误在 /graphql 需要向GraphQLView提供架构。 请求方法:GET请求URL:http://localhost:8000/graphqlDjango版本:1.11.1

  • 我在DynamoDB中创建了一个表“user\u info”,其中有一个主哈希键“user\u id”(String),没有范围键。然后,我创建了2个AWS lambda函数来插入和查询项目。我可以将项目插入表中,但查询表时,它会返回: ValidationException:提供的键元素与架构不匹配。 我的查询功能: 我一直得到这个例外: 自从 1) 我只有一个哈希主键。 2)user_id定义

  • 问题内容: 我正在尝试将Entity Framework与MySQL配合使用,但出现上述错误。我安装了最新的MySQL连接器。 完整错误为: 但是,我找不到任何建议说明您如何在“ entityFramework”部分中进行注册的内容。 其他一些帖子(例如)建议将提供程序添加到该 部分中,如下所示: 但这不起作用,因为它声称名称是重复的。而且,如果我实际上遍历了,我可以看到最后一个是MySQL提供程

  • 问题内容: 嗨,在一个测试套件上,我看来我有2个同一个提供程序的活动实例,一个实例用于实现,另一个实例用于实际实现。 我的结论基于以下事实:在测试中,我尝试用jest.fn调用替换方法,但仍然在我正在测试的服务上,该方法仍指向原始实现。 更奇怪的是,我能够模拟执行完全相同过程的另一个服务,好像取决于这些服务的注入方式(它们来自容器图中的位置)是否起作用。 我将尝试分享一些片段,但是,当然,只有一个

  • 我有一个特点,它是由同一个结构以不同的方式实现的。为了实现这一点,我有不同的结构,它们有不同的实现。对于抽象,我将这些结构称为A-Z: 有没有其他方法来实现这一点,以便结构的每个实例都有一个不同的trait实现,或者创建一个新结构是最好的方法? 我不熟悉编译语言。我所做的大部分工作都是使用Python和TypeScript。

  • 我们不使用任何MVC,MVP,或者MVVM模式。因为那不是这本书的目的,因此我们的Activity类将包含我们需要创建和展示用户列表的所有逻辑。