Standup Timer的MVC模式及项目结构分析

news/2024/9/21 12:24:50

前言

学习android一段时间了,为了进一步了解android的应用是如何设计开发的,决定详细研究几个开源的android应用。从一些开源应用中吸收点东西,一边进行量的积累,一边探索android的学习研究方向。这里我首先选择了jwood的Standup Timer 项目。

Standup Timer的项目结构

项目结构划分、以及各种设计模式分析我并不在行,所以如何写这篇博文让我相当的头疼。还决定从项目的结构谈起介绍一下每个包的职责,在结合MVC的概念进一步的了解如此划分项目的好处。
Standup Timer 项目结构图
在src文件夹中net.johnpwood.android.standuptimer包对应MVC中的控制器,它包含了项目中的所有Activity。
net.johnpwood.android.standuptimer.dao是数据持久层负责数据的存储访问。
net.johnpwood.android.standuptimer.model对应MVC中的M模型处理绝大多数的业务(在Standup Timer中可能因为项目小,体现不出来)。
net.johnpwood.android.standuptimer.utils是个工具包。
另外res文件夹对应了MVC模式中的View。
About.java和Help.java是用于展示项目信息和帮助的Activity类,本身并没有复杂的业务逻辑。事实上about和Help是在ConfigureStandupTimer中,通过选择某项目录然后以对话框方式展示。当ConfigureStandupTimer接受用户的输入请求,ConfigureStandupTimer.java控制器将请求移交给About.java控制器进行处理,最后About.java将决定选择那个View来响应用户的请求,这里是about.xml。
ConfigureStandupTimer是项目的起始Activtiy,它调用视图main.xml接收到的一些会议开始前的信息配置(如参加人数、团队和会议时间等),处理验证用户输入数据的合法性,然后决定调用哪个Model或者移交给其他控制器。
MeetingDetails用于展示会议的细节,它调用视图meeting_details.xml和用户交互,并将请求转交给Model里的Meeting来处理具体业务。
Prefs是一个PreferenceActivity,它负责系统的配置。
StandupTimer是项目的业务核心,通过倒计时方式控制会议的进程。使用timer.xml和用户交互,由Team负责具体业务处理(多为数据存储访问)。
TeamDetails用记录团队的所有参加过的会议和会议统计信息。team_details.xml负责和用户交互,其主要业务交由Team.java和MeetingStats.java处理。
TeamList团队列表,由teams.xml和用户交互,调用Team来处理核心业务(从数据库中选取所有的团队名称)。

项目结构图

转载于:https://www.cnblogs.com/keyindex/archive/2010/09/14/1825671.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pgtn.cn/news/17630.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

JAVA IDEA切换新机器配置环境一览

1. 装jdk 自动配置环境变量 2. idea配置git git config --global user.name "xxx" git config --global user.email "xxxxx.com"3. idea配置maven 解压apache-maven-xxx.jar,配置环境变量MAVEN_HOME,PATH增加%MAVEN_HOME%\bin settings.xml…

数据结构--串

文章目录串串的基本概念串的基本操作代码实现串 串的基本概念 长度:串中字符的个数,称为串的长度。 空串:长度为零的字符串称为空串。 空格串:由一个或多个连续空格组成的串称为空格串。 串相等:两个串相等&#xff…

5,ORM组件XCode(动手)

本篇才真正是XCode教程第一篇。《速览》是为了以最简洁的语言最短小的篇幅去吸引开发者;《简介》则是对XCode组件和XCode开发模式的一个整体介绍,让开发者从宏观的角度去理解XCode;《共舞》把XCode提到了一个新的高度,让开发者感受…

使用Python,OpenCV追踪对象的轨迹,来确定其移动方向

这篇博客是上一篇博客: 使用Python,OpenCV转换颜色空间,追踪对象的轨迹的扩展。将使用Python,OpenCV追踪对象的轨迹,来确定其移动方向; 虽然球跟踪展示了目标检测和跟踪的基础知识,但无法计算球的实际移动方向。通过在两个单独的帧中简单地计算对象(x,y)坐标之间的增…

组合数容斥原理

文章目录组合数devu鲜花组合数 for(int i0;i<2000;i){for(int j0;j<i;j){if(!j) f[i][j]1;else f[i][j](f[i-1][j-1]f[i-1][j])%mod;}}快速幂 int quick_pow(int a, int k, int p) {int res 1;while (k){if (k & 1) res (LL)res * a % p;a (LL)a * a % p;k >&…

使用Python进行视频流OCR

这篇博客将介绍如何使用Python,进行视频流OCR; Optical Character Recognition OCR光学字符识别 之前的博客介绍了如何使用快速傅立叶变换(FFT)检测图像和文档中的模糊。使用这种方法,能够检测出模糊、低质量的图像,然后提醒用户应该尝试捕获更高质量的版本,以便能够对其…

递归C++

文章目录什么是递归递归算法特点主要递归总结什么是递归 递归算法是一种直接或者间接调用自身方法的算法。简言之&#xff1a;在定义自身的同时又出现自身的直接或间接调用。 递归算法特点 递归算法解决问题的特点&#xff1a; 1&#xff09;递归就是方法里调用自身。 2&…

[摘]终于找到一个有助理解left/right/full outer join的例子

近日在学习《Understading DB2》的时候找到了一个例子&#xff0c;对于理解 left/right/full 三种 outer join 的大有裨益。 先看样本数据&#xff0c;来自DB2的示例数据库 sample&#xff1a; db2 > insert into employee values(99999,killkill,N,Huang,null,null,null,no…