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

浅谈Android MVC 设计模式

2018-03-26 14:33 423 查看
虽然有用过mvc都是一直没有好好分析,解读。下面意思意思…

MVC(Model-View-Control Model:模型 View:视图 Control:控制器)

设计模式表明,应用的任何对象,归根结底都属于模型对象、视图对象以及控制对象中的一种。

M(Model:模型)

模型对象存储着应用的数据和业务逻辑。模型对象通常用来映射与应用相关的一些事物,如用户、商店里的商品、服务器上的图片或者一段电视节目。

模型对象不关心用户界面,它存在的唯一目的就是存储和管理应用数据。

Android应用里的模型类通常就是我们创建的定制类。应用的全部模型对象组成了模型层。

V(View:视图)

视图对象知道如何在屏幕上绘制自己以及如何响应用户的输入,如用户的触摸等。一个简单的经验法则是,凡是能够在屏幕上看见的对象,就是视图对象。

Android默认自带了很多可配置的视图类。当然,也可以定制开发自己的视图类。应用的全部视图对象组成了视图层。

C(Control:控制器)

控制对象含有应用的逻辑单元,是视图与模型对象的联系纽带。控制对象响应视图对象触发的各类事件,此外还管理着模型对象与视图间的数据流动。

在Android里,控制器通常是Activity、fragment或Service的一个子类。



其实在Android应用开发中,就是基于最基础的MVC架构进行设计。



模型对象存储着应用的数据和业务逻辑,为存储和管理应用数据。

控制器是视图对象和模型对象的联系纽带,管理着模型对象和视图对象的数据流动,控制着诸如触发事件之类的响应事件。

视图对象就是用户感受到的界面逻辑。

还有一个简单的例子就是Listview,listview的数据为(Model),BaseAdapter和Activity为(Control),listview的子布局为(View)

创建模型

Student.java

public class Student {
private String rollNo;
private String name;
public String getRollNo() {
return rollNo;
}
public void setRollNo(String rollNo) {
this.rollNo = rollNo;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}


创建视图

StudentView.java

public class StudentView {
public void printStudentDetails(String studentName, String studentRollNo){
System.out.println("Student: ");
System.out.println("Name: " + studentName);
System.out.println("Roll No: " + studentRollNo);
}
}


创建控制器

StudentController.java

public class StudentController {
private Student model;
private StudentView view;

public StudentController(Student model, StudentView view){
this.model = model;
this.view = view;
}

public void setStudentName(String name){
model.setName(name);
}

public String getStudentName(){
return model.getName();
}

public void setStudentRollNo(String rollNo){
model.setRollNo(rollNo);
}

public String getStudentRollNo(){
return model.getRollNo();
}

public void updateView(){
view.printStudentDetails(model.getName(), model.getRollNo());
}
}


使用 StudentController 方法来演示 MVC 设计模式的用法。

MVCPatternDemo.java

public class MVCPatternDemo {
public static void main(String[] args) {

//从数据可获取学生记录
Student model  = retriveStudentFromDatabase();

//创建一个视图:把学生详细信息输出到控制台
StudentView view = new StudentView();

StudentController controller = new StudentController(model, view);

controller.updateView();

//更新模型数据
controller.setStudentName("John");

controller.updateView();
}

private static Student retriveStudentFromDatabase(){
Student student = new Student();
student.setName("Robert");
student.setRollNo("10");
return student;
}
}


验证输出

Student:
Name: Robert
Roll No: 10
Student:
Name: John
Roll No: 10


总结:

优点:分层,结构清晰,耦合性低,大型项目代码的复用性得到极大的提高,开发人员分工明确,提高了开发的效率,维护方便,降低了维护成本。

缺点:简单的小型项目,使用MVC设计反而会降低开发效率,层和层虽然相互分离,但是之间关联性太强,没有做到独立的重用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mvc 设计模式