多一点真诚,多一点套路,少一点随意 MVP设计模式
Model
package com.test.model;
/**
* Created by Admin on 2016/9/1.
*/
public class User {//Model,就是数据、模型
private String name;
private String password;
public User(String name,String password){
this.name = name;
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
package com.test.view;
public interface ILoginView {
public void onClearText();
public void onLoginResult(Boolean result, int code);
}
package com.test.view;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.test.mvp.R;
import com.test.presenter.ILoginPresenter;
import com.test.presenter.LoginPresenterCompl;
public class LoginActivity extends AppCompatActivity implements ILoginView, View.OnClickListener{//V 就是试图,只处理显示
private Button mLogin;
private Button mClear;
private EditText mName;
private EditText mPassWord;
ILoginPresenter loginPresenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mName = (EditText) findViewById(R.id.name);
mPassWord = (EditText)findViewById(R.id.pwd);
mLogin = (Button)findViewById(R.id.login);
mClear = (Button)findViewById(R.id.clear);
mLogin.setOnClickListener(this);
mClear.setOnClickListener(this);
loginPresenter = new LoginPresenterCompl(this);
}
@Override
public void onClearText() {
mName.setText("");
mPassWord.setText("");
Toast.makeText(this,"Clear " ,Toast.LENGTH_SHORT).show();
}
@Override
public void onLoginResult(Boolean result, int code) {
mLogin.setEnabled(true);
mClear.setEnabled(true);
if(result){
Toast.makeText(this,"success " + code,Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(this,"fail " + code ,Toast.LENGTH_SHORT).show();
}
}
@Override
public void onClick(View v) {
String name = mName.getText().toString();
String pwd = mPassWord.getText().toString();
switch (v.getId()){
case R.id.login :
loginPresenter.doLogin(name,pwd);
break;
case R.id.clear:
loginPresenter.clear();
break;
}
}
}
处理
package com.test.presenter;
public interface ILoginPresenter {
public void clear();
public void doLogin(String name, String password);
}
package com.test.presenter;
import com.test.model.User;
import com.test.view.ILoginView;
/**
* LoginPresenterCompl处理实现类 实现了ILoginPresenter接口 作为MVP中的P
* P对应的类中的成员变量分别存在 M(Model)和 V(View的,至少是View的接口)
*/
public class LoginPresenterCompl implements ILoginPresenter {
private ILoginView loginView; //V(View的接口,用于返回结果的接口,至View的接口)
private User user;//M(Model)
public LoginPresenterCompl(ILoginView loginView) {
this.loginView = loginView;
user = new User("张三", "1233");
}
@Override
public void clear() {//清除
loginView.onClearText();
}
@Override
public void doLogin(String name, String password) {//登录
boolean result = false;
int code = 0;
if (name.equals(user.getName()) && password.equals(user.getPassword())) {
result = true;
code = 1;
} else {
result = false;
code = 0;
}
loginView.onLoginResult(result, code);
}
}