MVP基本思想

MVP的逻辑性思维都在P层,他降低了页面的耦合度,具备低耦合的特性,MVP的出现使代码更具逻辑性
在这里插入图片描述
首先我们看到分包的严谨性
在这里插入图片描述
MVP的结构分析 : P层负责整体逻辑并且将M层和V层联系起来,M层主要负责代码块, Callback将结果集返回P层,V层最后展示视图

注意以下接口:

public interface MyCallBack<T> {
    void setData(T data);
}

public interface IModel {
    void startResquestData(String url, String phone, String pass, MyCallBack callBack);
}
public interface IPresenter {
    void resquestData(String url,String phone,String pass);
}
public interface IView<T> {
    void showResquestData(T data);
}

工具类

public class MyHttpsUntils {
    public static String get(String murl,String phone,String pass){
        try {
            URL url = new URL(murl+"?username="+phone+"&password="+pass);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("GET");
            connection.setConnectTimeout(5000);
            if(connection.getResponseCode()==200){
                InputStream stream = connection.getInputStream();
                String s = getStr(stream);
                return s;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    public static String getWorkData(String murl){
        try {
            URL url = new URL(murl);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("GET");
            connection.setConnectTimeout(5000);
            if(connection.getResponseCode()==200){
                InputStream stream = connection.getInputStream();
                String s = getStr(stream);
                return s;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    private static String getStr(InputStream stream) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
        StringBuffer buffer = new StringBuffer();
        String con;
        while((con=reader.readLine())!=null){
            buffer.append(con);
        }
        return buffer.toString();
    };
}

P层

public IPresenterImpl(IView iView) {
        this.iView = iView;
        iModel = new IModelImpl();
    }

@Override
public void resquestData(String url, String phone, String pass) {
    iModel.startResquestData(url, phone, pass, new MyCallBack() {
        @Override
        public void setData(Object data) {
            iView.showResquestData(data);
        }
    });
}

M层

public class IModelImpl implements IModel {
    private MyCallBack callBack;
    @SuppressLint("HandlerLeak")
    private Handler mhandler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            if(msg.what==0){
                String d = (String) msg.obj;
                Gson gson = new Gson();
                MyLogin myLogin = gson.fromJson(d, MyLogin.class);
                if(myLogin.getData()!=null){
                    MyLogin login = new MyLogin();
                    login.setCode(myLogin.getCode());
                    callBack.setData(login);
                }else{
                    callBack.setData(myLogin);
                }
        }
    }
};
@Override
public void startResquestData(final String url, final String phone, final String pass, MyCallBack callBack) {
    this.callBack = callBack;
    new Thread(new Runnable() {
        @Override
        public void run() {
            String data = MyHttpsUntils.get(url,phone,pass);
            mhandler.sendMessage(mhandler.obtainMessage(0,data));
        }
    }).start();
  }
}

猜你喜欢

转载自blog.csdn.net/wangyonghao132/article/details/84890204