zoukankan      html  css  js  c++  java
  • Standup Timer的MVC模式及项目结构分析

    前言

      学习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来处理核心业务(从数据库中选取所有的团队名称)。

    项目结构图

      
  • 相关阅读:
    Mina、Netty、Twisted一起学(七):公布/订阅(Publish/Subscribe)
    MySQL高可用之——keepalived+互为主从
    JS之BOM
    Mac下利用(xcode)安装git
    计算矩阵边缘元素之和
    什么是猴子补丁(monkey patch)
    协议支撑
    BZOJ 3727 PA2014 Final Zadanie 树形DP
    Linux cat命令
    iOS8新特性
  • 原文地址:https://www.cnblogs.com/keyindex/p/1825671.html
Copyright © 2011-2022 走看看