Android 设计随便说说之简单实践(合理组合)

上一篇(Android 设计随便说说之简单实践(模块划分))例举了应用商店设计来说明怎么做模块划分。模块划分主要依赖于第一是业务需求,具体是怎么样的业务。应用商店则包括两个业务,就是向用户展示applist,和下载app。第二是运行环境,在Android平台,有androidsdk提供socket等API支持。因此将模块大体换发了5个模块。(当然了图片加载可以额外提出,用开源组件去做,但是这里为了说明如何设计,暂不提到。还有下载也可以利用开源组件)分别是如下:

模块1 UI模块,负责展示信息和用户操作,主要类,RecommendActivity 负责数据展示和接受用户操作。RecommendInterface,负责底层数据回调。(这里只是举例,下载的就不在提及)

这三个类之间的调用关系如下:(我的viso貌似没有激活部分功能不能用只能口述了)

1 在RecommendActivity的onCreate里面初始化RecommendInterface实例RecommendBase实例。并将RecommendInterface注入到RecommendBase里面。

2 RecommendActivity随后给RecommendBase发送指令调用getPageViewData等方法请求数据。

3 当用户点击下载。gotoDownLoadApp的是时候,RecommendBase开始调用startDownloadApp。

好了UI模块的调用流程大体到这里。

模块2 调度模块。负责整体业务调度。主要的类包括如下:

巨复杂。不过我们继续理一下各个类调用的关系。

1 初始化该模块就是初始化Controller。Controller初始化ControllerDownLoadAppInfosInterface, 和ControllerBase。Controller将ControlelrDownLoadAppInfosInterface注入到ControllerBase里面。controllerBase初始化的时候初始化ControllerDownLoadAppInterface。

2 关键点,UI模块如何和调度模块交互。

     2.1   RecommendBase里面初始化Controller和ControllerUIInterface。并将RecommendInterface注入到ControlelrUiInterface里面。

    2.2   当RecommendActivity接收到用户指令时,RecommendBase接收到指令调用Controller.而当异步的结果出来时,ControllerUIInterface 调用RecommendInterface。并且由RecommendInterface 将UI界面更新给用户。(由此可见消息是从RecommendBase循环了一圈。)

3 页面数据加载。Controller接收到RecommendBase来的指令后调用ControllerBase启动加载模板和数据getViewDataByTempID。当底层获取到Temp和Data的是时候,会通知到ControlelrDownLoadAppInfosInterface, 这个接口在回调Controller。 Controller调用CreateViewData。之后会调用ControllerUIInterface调用将数据给到UI。

还有下载过程。这里就不在推演了。但是主要的是要看模块间怎么调用,也即是说怎么合理组合。

会发现,上层业务和自己的依赖接口是一套全面的完整的业务。而调度层也是完成了一套完整的业务。

第三个模块,数据解析模块,负责网络的applist数据和模板解析并组合。

关键点,如何和调度模块交互

在调度层的ControllerBase里面初始化该类DataWorkManager, 调度层有了模板和app数据后,调用setData,然后在调用getViewDataBytempId就可以或的模板数据。

也就是说,在调度层的依赖类里面,初始化自己的接口,并且根据依赖类的方法来实现业务。

但是这个是一个业务单元,不能实现整体业务。

第四个模块,网络请求模块。

关键点,如何和调度层交互。

首先在ControllerBase里面初始化NetTaskManager和NetTaskResultListener。并且ControllerDownLoadAppinfosInterface注入到NetTaskResultListener。

然后开始调用downLoadTemplateById()。异步的,结果由NetTaskResultListener反馈给ControllerDownLoadAppinfosInterface。由ControllerDownLoadAppinfosInterface来处理这个消息。

模块5 下载模块,还需要说么?我想不必了。

其实合理组合就看你在模块之间如何调度了。模块之所以提供接口,是因为第一,他的模块不需要其他模块所关心的。只要调用它的接口即可。第二,如果他的实现出现问题,问题解决也必然在这个模块里面。不会需要其他地方的修改。因此原则上无论模块如何改变,但不允许接口改变。

每个模块都有自己的依赖类,但是如果其他模块有类似的实现,则提供的接口必然和前者模块的依赖做出一个适配来实现无缝连接。上面的例子都是很简单的。基本上没有太多的需要依赖和接口之间的适配,但是实际工作中多着去了。

最后,很抱歉的说,上面的例子多有纰漏,很多地方只是说明说的很简单,很粗糙,有冗余,甚至有错。仅仅希望能有所获益。

时间: 2024-07-30 13:41:58

Android 设计随便说说之简单实践(合理组合)的相关文章

Android 设计随便说说之简单实践(模块划分)

上篇随笔随(Android 设计随便说说)便说了一下什么是设计以及设计的原则,这里举一个简单的例子来进一步的说Android设计.我们以应用商店的设计来举例. 在设计之前,需要把握两部分内容,才能使得设计更加的合理,恰当. 第一部分是应用本身包含的业务都有哪些.应用商店的业务大体上有一下几个: 1 给用户展示apk信息 2 提供用户下载apk 当然了已上还可以继续细分.但是对于我们的例子来说已经足够了. 第二部分本地sdk,也就是手机能够提供哪些接口.对于上面的分析我们需要了解一下API. 第一

Android 设计随便说说

我曾经搞过应用程序的设计,当时只是读了半本宝典<重构...>,现在看来就这半本九阴真经,收益甚多啊 .再加上这现年工作上的印证,基本上可以拿出喷一下了.当然现在看来当年的项目设计真是很烂了. 第一个问题,什么是设计?我的回答是:为了提高程序执行效率,对程序按照模块划分,并且合理组合.往后我将继续沿用这两个点,模块划分和合理组合. 第二个问题,设计的原则?我的回答是:低耦合,高内聚是设计唯一的原则.有可能你还要问不是还有五大原则么?这里我将这五个原则一一道来. 1  单一职责原则.什么是单一职责

Android 设计原则【转载】

原文地址 本文内容 吸引我的眼球 简化我的生活 让我眼前一亮 在使用过大量 Android APP 后,你会发现,遵循了下面这些原则的 APP 将会有更好的用户体验. 我们知道,往往国企的那些软件,都很难用,比如银行手机客户端,操作繁杂.界面难看.功能有限--基本上,那就是糊弄领导的东西,完全不是给用户用的,农业银行手机客户端,在我所用过的所有银行手机客户端中算是不错的了(而且,转账没有手续费),操作有点不便,尤其是"返回"操作,有种"不知身在何处"的感觉:而建设银

SQL知识以及SQL语句简单实践

综述 大家都知道SQL是结构化查询语言,是关系数据库的标准语言,是一个综合的,功能极强的同时又简洁易学的,它集级数据查询(Data Quest),数据操纵(Data Manipulation),数据定义(Data Definition),数据控制(Data Control)于一体 即: SQL语言包含4个部分: ※ 数据定义语言(DDL),例如:CREATE.DROP.ALTER等语句 ※ 数据操作语言(DML),例如:INSERT(插入).UPDATE(修改).DELETE(删除)语句 ※ 数

Xamarin.Android之引导页的简单制作

0x01 前言 对于现在大部分的APP,第一次打开刚安装或更新安装的APP都会有几个引导界面,通常这几个引导页是告诉用户 APP有些什么功能或者修改了什么bug.新增了什么功能等等等. 下面就用Xamarin.Android来简单实现一下.主要用到的是ViewPager,当然也就离不开Xamarin.Android.Support.v4 如果遇到不能编译的问题,可以参考Xamarin.Android之简单的抽屉布局的出错处理方案. 0x02 页面布局编写 新建一个Android项目 添加几个简单

Android自定义用户控件简单范例(一)

一款优秀的移动应用需要具有自己独特统一的风格,通常情况下UI设计师会根据产品需求和使用人群的特点,设计整体的风格,界面的元素和控件的互效果.而原生态的Android控件为开发人员提供的是最基本的积木元素,如果要准确地传递统一的视觉效果和交互体验,对控件的自定义使用是非常有必要的. 这篇文章通过一个简单的从Java后台程序中进行创建的示例来说明Android自定义控件的运行原理. <LinearLayout xmlns:android="http://schemas.android.com/

Android设计中的.9.png图片

.9.png是一种能够自己定义拉伸特定区域的图片格式. 简书:Android设计中的.9.png图片 在Android的UI设计开发中,非常多控件须要适配不同的手机分辨率进行拉伸或者压缩,这样就出现了能够随意调整大小的一种图片格式".9.png".这样的图片是用于Android开发的一种特殊的图片格式,它能够指定特定的区域进行拉伸而不失真.同一时候能够指定前景内容的显示区域.即.9.png图片的用处能够概括为以下两点: - .9.png图片在图片拉伸的时候特定的区域不会发生图片失真.

Android 自定义View (五)&mdash;&mdash;实践

前言: 前面已经介绍了<Android 自定义 view(四)-- onMeasure 方法理解>,那么这次我们就来小实践下吧 任务: 公司现有两个任务需要我完成 (1)监测液化天然气液压罐的液位 (2)监测液化天然气液压罐的压力 UI设计师给我的设计截图如下:   任务一实践开始 第一步:先来看看整体结构组成 第二步:绘制文字 (1)我们将底部的文字.颜色,大小都是可以灵活自定义的,所以先得申明底部文字相关属性参数,方便根据需求进行设置 (2)整体上来看各个区域的颜色,文字画笔的相关属性都是

Android 设计的几处硬伤

[核心提示] 一些 Android App 不仅仅是设计风格的问题,产品交互上也比较混乱,造成用户体验不一致,这一部分原因也是 Android 当初设计时遗留的问题. 前几天看到 NovaDNG 介绍 Android Design 和 埋汰 MIUI 设计的文章,有些感触,而一些 Android App 不仅仅是设计风格的问题,产品交互上也比较混乱,造成用户体验不一致,这一部分原因也是 Android 当初设计时遗留的问题. 今年 Google I/O 大会上没有更新 Android 的版本,G