MVC模式
简介
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
MVC分别代表什么
Model(模型)表示应用程序核心(比如数据库记录列表)。
View(视图)显示数据(数据库记录)。
Controller(控制器)处理输入(写入数据库记录)
为什么要用到MVC模式
1、耦合性低。降低了代码的耦合性,利用MVC框架使得View(视图)层和Model(模型)层可以很好的分离,这样就达到了解耦的目的,所以耦合性低,减少模块代码之间的相互影响。
2、模块区域分明,方便开发人员的维护。
PostMan
用来测试url,装在谷歌浏览器的插件
RestfulApi
模拟化URL,把URL分成若干份,复用方便管理
代码案例
思路:
1.定义一个下载接口
2.定义一个结果接口
3.实现类(下载接口)
(1)写具体的下载逻辑,实现下载接口 重写接口中的方法
(2)下载结果传给结果接口 调用结果接口
Activity中
1.调用实现类(下载),传递url和结果接口
2.重写success取结果
效果展示
代码
定义接口
获取数据的接口
package com.example.day002;
/**
* 规定如何处理数据 M第一步接口
*/
public interface GetJsonInterface {
public void getJson(String url);
}
成功和失败的接口
package com.example.day002;
public interface ResultIntrface {
public void success(String json);
public void fail();
}
实现接口的方法
package com.example.day002;
import android.util.Log;
import java.io.IOException;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
/**
* Model第二部;接口实现类
*
* 给接口传值 调用接口的方法
*/
public class GetJsonImpl implements GetJsonInterface{
ResultIntrface resultIntrface;
public GetJsonImpl(ResultIntrface resultIntrface) {
this.resultIntrface = resultIntrface;
}
private static final String TAG = "GetJsonImpl";
@Override
public void getJson(String url) {
OkHttpClient client = new OkHttpClient.Builder().build();
Request builder = new Request.Builder().get().url(url).build();
Call call = client.newCall(builder);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
resultIntrface.fail();
}
@Override
public void onResponse(Call call, Response response) throws IOException {
//成功
String string = response.body().string();
Log.d(TAG, "json: "+string);
resultIntrface.success(string);
}
});
}
}
Activity中的代码
package com.example.day002;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
public class Main2Activity extends AppCompatActivity implements ResultIntrface{
private static final String TAG = "Main2Activity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
}
/**
* 下载
* @param view
*/
public void download(View view) {
//显示 还得和model要结果
GetJsonImpl um = new GetJsonImpl(this);
String url="https://raw.githubusercontent.com/zhang721788/testmaterial/master/doctor0.json";
um.getJson(url);
}
@Override
public void success(String json) {//取结果 从m层
Log.d(TAG, "success: "+json);
}
@Override
public void fail() {
}
}