Android MVC框架

article/2025/9/13 3:54:56

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、MVC是什么?
  • 二、写个简单的例子
    • 1.bean
    • 2.callback
    • 3.interfaces
    • 4.model
    • 5.ui
  • 优缺点
  • 总结


前言

提示:很多教程讲解框架感觉都像说天书一堆理论。学习的东西没用成为武器库反而成了累赘。mvc框架的作用其实就是把Activity里的网络请求、数据库存取操作\复杂的算法,耗时的任务等,把一堆东西拆分出来不要什么都放Activity里,好处是有利于维护,当然你感觉不需要我能看懂自己代码维护自己也没问题那么你可以不用。有时候为了使用而使用反而南辕北辙了,当然你可以不用但不能不会</font>


提示:以下是本篇文章正文内容,下面案例可供参考

一、MVC是什么?

示例:MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,是一种框架模式。

二、写个简单的例子

1.bean

代码如下(示例):


/*** @description:* @author: 黄剑桥* @email: 1437337158@qq.com* @date :   2021/6/23 20:24*/
public class CangTouShiBean {/*** message : 发布任务* code : 200* data : {"task":4,"software":1,"inputContent":"五一七天了建设科技的"}*/private String message;private int code;/*** task : 4* software : 1* inputContent : 五一七天了建设科技的*/private DataBean data;public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}public int getCode() {return code;}public void setCode(int code) {this.code = code;}public DataBean getData() {return data;}public void setData(DataBean data) {this.data = data;}public static class DataBean {private int task;private int software;private String inputContent;public int getTask() {return task;}public void setTask(int task) {this.task = task;}public int getSoftware() {return software;}public void setSoftware(int software) {this.software = software;}public String getInputContent() {return inputContent;}public void setInputContent(String inputContent) {this.inputContent = inputContent;}}
}

2.callback

/*** @description: 参考地址  https://www.cnblogs.com/Claire6649/p/6091061.html* @author: 黄剑桥* @email: 1437337158@qq.com* @date :   2021/6/23 20:22*/
public interface BeanCallback<T> {/*** 失败* @param msg 请求消息*/void onError(String msg);/*** 请求成功* @param t*/void onSuccess(T t);
}

3.interfaces

/*** @description:* @author: 黄剑桥* @email: 1437337158@qq.com* @date :   2021/6/23 20:23*/
public interface ICangTouShi {/*** 请求数据,需要有变化的参数* @param num 参数* @param type* @param yayuntype* @param key* @param callback*/void doRequest(String num, String type, String yayuntype, String key, BeanCallback<CangTouShiBean> callback);}

4.model

/*** @description:M层:适合做一些业务逻辑处理,比如数据库存取操作,网络操作,复杂的算法,耗时的任务等都在model层处理。* @author: 黄剑桥* @email: 1437337158@qq.com* @date :   2021/6/23 20:59*/
public class CangTouShiModel implements ICangTouShi {@Overridepublic void doRequest(String num, String type, String yayuntype, String key, BeanCallback<CangTouShiBean> callback) {OkHttpClient client = new OkHttpClient();RequestBody body = new FormBody.Builder().add("showapi_sign", "150e9206e7f542bab4affe49d73cb920").add("num", num).add("type", type).add("yayuntype", yayuntype).add("key", key).build();Request request = new Request.Builder().post(body).url("http://192.168.1.217:8080/a/task3.json").build();Call call = client.newCall(request);call.enqueue(new Callback() {@Overridepublic void onFailure(Call call, IOException e) {callback.onError(e.getMessage());}@Overridepublic void onResponse(Call call, Response response) throws IOException {String json = response.body().string();Gson gson = new Gson();CangTouShiBean shiBean = gson.fromJson(json, CangTouShiBean.class);callback.onSuccess(shiBean);}});}
}

5.ui

import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;import com.example.mvc.R;
import com.example.mvc.bean.CangTouShiBean;
import com.example.mvc.callback.BeanCallback;
import com.example.mvc.model.CangTouShiModel;/*** V层:应用层中处理数据显示的部分,XML布局可以视为V层,显示Model层的数据结果。* <p>* C层:在Android中,Activity处理用户交互问题,因此可以认为Activity是控制器,* Activity读取V视图层的数据(eg.读取当前EditText控件的数据)* 控制用户输入(eg.EditText控件数据的输入)* ,并向Model发送数据请求(eg.发起网络请求等)。*/
public class MVCActivity extends AppCompatActivity {private TextView tv;private Button bt;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();//逻辑部分registerListener();}private void registerListener() {bt.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {CangTouShiModel model = new CangTouShiModel();model.doRequest("num", "type", "ya", "key", new BeanCallback<CangTouShiBean>() {@Overridepublic void onError(String msg) {runOnUiThread(new Runnable() {@Overridepublic void run() {tv.setText("msg" + msg);}});}@Overridepublic void onSuccess(CangTouShiBean cangTouShiBean) {runOnUiThread(new Runnable() {@Overridepublic void run() {tv.setText(cangTouShiBean.getData().getInputContent());}});}});}});}private void initView() {tv = (TextView) findViewById(R.id.test_tv);bt = (Button) findViewById(R.id.test_bt);}
}


优缺点

在这里插入图片描述

Android中使用了Activity来充当Controller,但实际上一些UI也是由Activity来控制的,比如进度条等。因此部分视图就会跟Controller捆绑在同一个类了。同时,由于Activity的职责过大,Activity类的代码也会迅速膨胀。
MVC还有一个重要的缺陷就是View跟Model是有交互的,没有做到完全的分离,这就会产生耦合。

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了mvc的使用,而mvc提供了大量能使我们快速便捷地处理维护。


http://chatgpt.dhexx.cn/article/yli2yNjq.shtml

相关文章

MVC框架之SpringMVC

简介 Spring MVC 是 Spring 给我们提供的⼀个⽤于简化 Web 开发的框架。在说Spring MVC前&#xff0c;我们需要了解下什么是MVC架构以及三层架构&#xff1f; 1 MVC 体系结构 三层架构 在 JavaEE 开发中&#xff0c;⼏乎全都是基于 B/S 架构的开发。那么在 B/S 架构中&…

MVC架构简单介绍

一&#xff1a;MVC架构简介 MVC是Model&#xff08;模型&#xff09;view&#xff08;视图层&#xff09;controller&#xff08;控制器&#xff09;这三者的缩写。 在百度百科中是这样介绍的&#xff1a;MVC强制性地使应用程序的输入、处理和输出分开。使用MVC应用程序被分成…

MVC框架详解(资源整理)

一、什么是MVC&#xff1f; MVC是三个单词的首字母缩写&#xff0c;它们是Model&#xff08;模型&#xff09;、View&#xff08;视图&#xff09;和Controller&#xff08;控制&#xff09;。 1、视图 视图(View)代表用户交互界面&#xff0c;对于Web应用来说&#x…

MVC框架

MVC框架 MVC框架——一个理论框架&#xff01;&#xff01;&#xff01;前言——必看1 经典MVC框架2 经典mvc模式就是jspservletJavaBean3 JavaBean4 实际MVC框架应用5 总结 MVC框架——一个理论框架&#xff01;&#xff01;&#xff01; 注意&#xff1a;mvc框架只是理论上的…

dojo介绍

dojo是目前最为强大的js框架&#xff0c;包括ajax,browser,event,widget等跨浏览器API&#xff0c;用dojo写Web OS可谓非常方便。 dojo现在已经4.0了&#xff0c;我自己其实不怎么用dojo&#xff0c;毕竟dojo强大的地方在于界面和特效的封装&#xff0c;可以让开发者快速构建一…

(2)Dojo学习之模块化

引言Dojo之模块化 1定义模块2调用模块3解释dojoConfig的全局变量 总结 1本篇博客代码下载地址Dojo模块化 1.引言 在本篇博客中主要讲解一下如何在dojo中使用模块&#xff0c;如何自定义自己的模块等等&#xff0c;在使用dojo编程的时候&#xff0c;大家一定要转变自己的思想&a…

Dojo 1.6 官方教程: 创建自定义Dojo小部件(Widget)

在这个教程中&#xff0c;我们将会演示如何利用Dojo 和Dijit框架来创建自定义的小部件。 主要会使用到dijit._Widget 和dijit._Templated 基类和mixin。 对dijit框架的基础知识&#xff0c;可以参看前两篇教程 难度&#xff1a;中等 适用Dojo版本&#xff1a; 1.6 作者&#xf…

(3)Dojo学习之Class

引言dojo中的类 1创建一个简单的类2类和模块结合使用3关于类的继承 需求 1需求一2需求二很重要21代码实现22程序出错23程序运行3 需求三 再次介绍require加载模块总结 1本博客代码的下载地址dojo_class 1.引言 说到面向对象&#xff0c;我们就不得不提一下类&#xff0c;在原生…

探索dojo/json

难度&#xff1a;中等 Dojo版本&#xff1a;1.7 原作者&#xff1a;Kris Zyp 译者&#xff1a;Oliver (zhuxw1984gmail.com) 原文链接&#xff1a;http://www.sitepen.com/blog/2012/09/21/exploring-dojojson/ &#xff08;年初翻译过Kris Zyp的另一篇介绍dojo/json的文章&…

dojo是什么?

现在Web端vue、React、Angular大行其道&#xff0c;安卓端js也有React Native等&#xff0c;那么学习dojo有什么意义呢&#xff1f; 有些老的项目还是用的dojo。。。。例如arcgis javascript api等等 https://dojotoolkit.org/documentation/tutorials/1.10/hello_dojo/ 为什…

Dojo入门篇

Dojo是一个JavaScript实现的开源DHTML工具包&#xff0c;Dojo最初的目标是解决开发HTML应用程序中遇到的一些长期存在的问题&#xff0c;然而现在Dojo已经成为了开发RIA应用程序的利器。 Dojo让Web页面具有动态能力&#xff0c;我们可以在其他支持JavaScript的环境中使用Dojo。…

dojo中的类

使用arcgis api for js 4.*进行地图的web前端开发&#xff0c;就不得不与dojo打交道。dojo是一个框架&#xff0c;自成体系&#xff0c;比如它对类的支持&#xff0c;有自己的一套。众所周知&#xff0c;js不是面向对象语言&#xff0c;没有类这一说&#xff0c;都是用函数来模…

dojo学习教程

Dojo 作为最著名的 Ajax 开源项目之一&#xff0c;不仅让 Web 程序员可以免费获得和使用其框架进行 Web 应用的开发&#xff0c;更吸引了大量的开发者对其不断的扩充&#xff0c;开发新的组件。DojoX 就是在这样的开发社区中产生的。DojoX 是一组基于 dojo 的开源项目的集合&am…

Dojo与jQuery综合比较分析

最近Dojo和jQuery双双发布了最新的1.8版本,有着相同版本号的两个Javascript库也有许多核心的相同之处:相同的资源加载机制AMD、相同的选择器 引擎Sizzle等。作为业界知名的Javascript库,Dojo和jQuery在各自领域有着为数众多的拥护者。不过正所谓一把钥匙开一把锁,对一个项目…

Dojo简述

Dojo是一个JavaScript实现的开源DHTML工具包。Dojo的最初目标是解决开发DHTML应用程序时遇到的一些长期存在的历史问题。 【注&#xff1a;DHTML是一种使HTML页面具有动态特性的艺术。DHTML是一种创建动态和交互WEB站点的技术集合。对大多数人来说&#xff0c;DHTML意味着HTML…

ibatis简介

背景 介绍ibatis实现之前&#xff0c;先来看一段jdbc代码: Class.forName("com.mysql.jdbc.Driver"); String url "jdbc:mysql://localhost:3306/learnworld"; Connection con DriverManager.getConnection(url, "root","learnwo…

Ibatis使用

部分参考&#xff1a;https://blog.csdn.net/shixiaoguo90/article/details/49949445 Apache iBatis是当前IT项目中使用很广泛的一个半自动ORM框架&#xff0c;区别于Hibernate之类的全自动框架&#xff0c;iBatis对数据库的操作拥有更加灵活的控制&#xff0c;对于那些经常需…

iBatis-iBatis配置环境(eclipse+mysql)

在使用JAVA框架前要配置其环境&#xff0c;比如使用Hibernate、Struts等都需要对其环境进行配置&#xff0c;当然使用iBatis开发之前&#xff0c;也需要配置iBatis环境。 一、iBatis环境的配置只需三步 1.引入jar包 2.配置sqlMapConfig.xml文件 3.配置SqlMap.xml文件 二、概览i…

什么是IBatis

什么是IBatis 我一直想写一篇关于持久化数据访问的文章&#xff0c;可是我不知道怎么开始介绍&#xff0c;前两天晚上睡觉的时候突然有了一些开始写的想法&#xff0c;所以我决定今天动手开始写一点东西。头一次写这样的文章&#xff0c;希望大家不要见怪。 现在网上很多人学习…

ibatis-Spring 整合

这两天一直在研究ibatis与spring的整合 一个小小的demo搞的我头晕目眩的&#xff0c;但程序一旦跑起来了&#xff0c;突然有一种豁然开朗&#xff0c;重见天日&#xff0c;感觉生活很美好的感觉&#xff01;&#xff0c;也许&#xff0c;这就是那一行行的代码带给我们的不同享受…