- 1、本文档共44页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Android应用框架
——孙艳
框架和设计模式的区别
设计模式:
只有实例才能用代码表示;
设计重用
比框架更小的元素;
同一模式却可适用于各种应用;
设计模式是软件的知识;
小技巧,对具体问题提出解决方案,以提高代码复用率,降低耦合度。
框架:
可以用代码表示,也能直接执行或复用;
代码重用;
一个框架中往往含有一个或多个设计模式;
框架总是针对某一特定应用领域;
框架是软件;
大智慧,用来对软件设计进行分工。
1.主流架构
MVC( Model-View-Controller )
MVP( Model-View-Presenter )
MVVM(Model-View-ViewModel)
MVC的由来
MVC(Model-View-Controller,模型-视图-控制器)模式是80年代Smalltalk-80出现的一种软件设计模式,后来得到了广泛的应用,其主要目的在于促进应用中模型,视图,控制器间的关注的清晰分离。
通用MVC
Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。
View(视图)是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。
Controller(控制器)是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
Android中MVC的分工
M层:适合做一些业务逻辑处理,比如数据库存取操作,网络操作,复杂的算法,耗时的任务等都在model层处理。
V层:应用层中处理数据显示的部分,XML布局可以视为V层,显示Model层的数据结果。
C层:在Android中,Activity处理用户交互问题,因此可以认为Activity是控制器,Activity读取V视图层的数据(eg.读取当前EditText控件的数据),控制用户输入(eg.EditText控件数据的输入),并向Model发送数据请求(eg.发起网络请求等)。
Activity
XML布局
MVC Demo
Controller控制器
package com.xjp.androidmvcdemo.controller;
?
import android.app.Dialog;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
?
import com.xjp.androidmvcdemo.R;
import com.xjp.androidmvcdemo.entity.Weather;
import com.xjp.androidmvcdemo.entity.WeatherInfo;
import com.xjp.androidmvcdemo.model.OnWeatherListener;
import com.xjp.androidmvcdemo.model.WeatherModel;
import com.xjp.androidmvcdemo.model.WeatherModelImpl;
?
?
public class MainActivity extends ActionBarActivity implements OnWeatherListener, View.OnClickListener {
?
????private WeatherModel weatherModel;
????private Dialog loadingDialog;
????private EditText cityNOInput;
????private TextView city;
????private TextView cityNO;
????private TextView temp;
????private TextView wd;
????private TextView ws;
????private TextView sd;
????private TextView wse;
????private TextView time;
????private TextView njd;
????
????@Override
????protected void onCreate(Bundle savedInstanceState) {
????
文档评论(0)