浅谈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)
缺点:简单的小型项目,使用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.javapublic 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.javapublic 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.javapublic 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.javapublic 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设计反而会降低开发效率,层和层虽然相互分离,但是之间关联性太强,没有做到独立的重用。
相关文章推荐
- 浅谈Android架构设计模式中MVC、MVP、MVVM
- Android设计模式之浅谈MVP
- 浅谈Android中MVC、MVP、MVVM模式(二)
- Android 设计模式之MVC,从一个实例中来理解MVC
- Android编程权威指南(第二版)学习笔记(二)—— 第2章 Android 与 MVC 设计模式
- Android mvc,mvp , mvvm三种设计模式的选择实践
- 浅谈Android MVP设计模式(简单结合RxJava+Retrofit)
- 精通android体系架构、mvc、常见的设计模式、控制反转(ioc)
- Android设计模式之浅谈MVP
- 浅谈Android中MVC、MVP、MVVM模式(三)
- 精通android体系架构、mvc、常见的设计模式、控制反转(ioc)
- 浅谈android的MVP设计模式之内存泄露问题
- 浅谈Android中的MVC与MVP模式
- 第 2 章 Android 与 MVC 设计模式
- Android设计模式之浅谈MVP
- 浅谈Android开发中的MVVM模式及与MVP和MVC的区别
- [Android&Java]浅谈设计模式-代码篇:观察者模式Observer
- 精通android体系架构、mvc、常见的设计模式、控制反转(ioc)
- 浅谈Android设计模式学习之观察者模式
- android设计模式(MVC MVP MVVM)