Andriod studio 学习 之 设计模式之MVC

MVC模式

简介

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

MVC分别代表什么

Model(模型)表示应用程序核心(比如数据库记录列表)。
View(视图)显示数据(数据库记录)。
Controller(控制器)处理输入(写入数据库记录)
Andriod studio 学习 之 设计模式之MVC_第1张图片

为什么要用到MVC模式

1、耦合性低。降低了代码的耦合性,利用MVC框架使得View(视图)层和Model(模型)层可以很好的分离,这样就达到了解耦的目的,所以耦合性低,减少模块代码之间的相互影响。
2、模块区域分明,方便开发人员的维护。

PostMan

用来测试url,装在谷歌浏览器的插件

RestfulApi

模拟化URL,把URL分成若干份,复用方便管理

代码案例

思路:
1.定义一个下载接口
2.定义一个结果接口
3.实现类(下载接口)
(1)写具体的下载逻辑,实现下载接口 重写接口中的方法
(2)下载结果传给结果接口 调用结果接口
Activity中
1.调用实现类(下载),传递url和结果接口
2.重写success取结果

效果展示

Andriod studio 学习 之 设计模式之MVC_第2张图片

代码

定义接口

获取数据的接口

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() {

    }
}

你可能感兴趣的:(IT,安卓,计算机)