您的位置:首页 > 移动开发 > Android开发

MVC的一些个人看法

2016-04-10 18:56 435 查看
从官方的定义上来说,MVC的三个字母代表的含义是指模型(model)-视图(view)-控制器(controller)。这三者分别具体代表着什么,我这里以一个加载和保存用户数据的例子来说明。

惯例,先看图:



1、model层

在我看来,model层就是用来对抽象事物封装成一个具体类的实现,比如在这个例子中,则需要将用户数据封装成一个类,如下是我定义的一个UserModel类:

package com.xlc.mvclearn;

/**
* Created by acer on 2016/4/22.
*/
public class UserModel {
private int userid;
private String username;
private int userage;

public int getUserid() {
return userid;
}

public void setUserid(int userid) {
this.userid = userid;
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public int getUserage() {
return userage;
}

public void setUserage(int userage) {
this.userage = userage;
}
}
2、view层
我个人理解是将activity部分视为整个框架下的view层,其中也包括activity对应的xml布局:

xml布局部分:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" tools:context=".MainActivity"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:id="@+id/btn_load_data"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_height="wrap_content"
android:text="加载数据"/>
<Button
android:id="@+id/btn_save_data"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:layout_marginRight="20dp"
android:text="保存数据"/>

</LinearLayout>
<TextView
android:id="@+id/tv_result"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="10dp"
android:textSize="16sp"/>

</LinearLayout>
对应的activity部分:
package com.xlc.mvclearn;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private Button btn_load_data;
private Button btn_save_data;
private TextView tv_result;
private MainController controller;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/**
* 控件初始化
*/
btn_load_data = (Button) findViewById(R.id.btn_load_data);
btn_save_data = (Button) findViewById(R.id.btn_save_data);
tv_result = (TextView) findViewById(R.id.tv_result);
/**
* 设置监听
*/
btn_load_data.setOnClickListener(this);
btn_save_data.setOnClickListener(this);

/**
* 控制器初始化
*/
controller = new MainController();
}

@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btn_load_data:
UserModel user = controller.getUser(1);
tv_result.setText("用户id:"+user.getUserid()+"\n"+"用户姓名:"+user.getUsername()+"\n"
+"用户年龄:"+user.getUserage());
break;
case R.id.btn_save_data:
controller.saveUser(new UserModel());
break;
}

}
}


activity中主要是用来提供用户交互和展现的地方,这里是提供了加载和保存数据的两个按钮以及展现用户数据的textview。
3、controller层

controller层主要是处理业务逻辑部分,包括从服务器加载数据或者从其他来源(数据库等)请求数据、或者保存数据到数据库。

package com.xlc.mvclearn;

/**
* Created by acer on 2016/4/22.
*/
public class MainController {
public MainController() {
}

public UserModel getUser(int userid){
//从数据库或者从服务器接口获取数据
UserModel user = new UserModel();
user.setUserid(1);
user.setUsername("mvc");
user.setUserage(20);
return user;
}
public void saveUser(UserModel userModel){
//保存用户信息到数据库
}
}


结语:一些比较粗糙的看法,有错误的地方,欢迎指出!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android mvc