用mvp模式實現登入註冊的統一校驗

weixin_34320159發表於2016-11-21

一個應用中一般情況下注冊,忘記密碼這些功能的校驗基本上是一樣的,使用現在流行的mvp設計模式,可以簡化校驗操作,將校驗操作統一寫在interface中,也可以更方便的維護應用。

1.定義統一校驗介面:

public interface ICheckInfoData {    
void getCheckInfo(String mobile,String editPhone,String password,String code,String check,final OnMessageResultListener listener);
}

實現校驗介面:

public class ICheckInfoImpl implements ICheckInfoData{
 @Override
public void getCheckInfo(String mobile, String editPhone,String password, String code,String check, final OnMessageResultListener listener) {    
   if(TextUtils.isEmpty(mobile)){      
    listener.onMessageSuccess("請輸入手機號!");        
     return;    
}
if(TextUtils.isEmpty(code))
{   
 listener.onMessageSuccess("請輸入驗證碼!");   
 return;
}
if(TextUtils.isEmpty(password)){   
 listener.onMessageSuccess("請輸入密碼!");    
return;
}
if(password.length()<6){    
listener.onMessageSuccess("密碼長度過短!");    
return;}
if(!CheckUtils.isMobileNO(mobile)){    
listener.onMessageSuccess("請輸入正確的手機號碼!");    
return;}if(!code.equals(check)){    
listener.onMessageSuccess("請輸入正確的驗證碼!");  
  return;}
listener.onMessageSuccess("ok");

}

2.實現view層的介面

public interface ICheckInfoView {    
String getMoblie();   
 String getPassword();    
String getCode();    
String getEditPhone();    
String getCheck();    
<T>void onMessageSuccess(T t);
}

3.實現CheckInfoPresenter

public class CheckInfoPresenter {   
 private ICheckInfoData mICheckInfoData;   
 private ICheckInfoView mICheckInfoView;    
public CheckInfoPresenter(ICheckInfoView checkView) {   
     this.mICheckInfoView = checkView;        
mICheckInfoData = new ICheckInfoImpl();   
 }    
public void getCheckInfoMessage() {        
mICheckInfoData.getCheckInfo(mICheckInfoView.getMoblie(), mICheckInfoView.getEditPhone(), mICheckInfoView.getPassword(),           
 mICheckInfoView.getCode(), mICheckInfoView.getCheck(), new OnMessageResultListener() {                  
  @Override                    
public <T> void onMessageSuccess(T t) {                        
mICheckInfoView.onMessageSuccess(t);                 
   }               
 });   
 }
}

如此一來,就可以在需要校驗的地方實現:
public class FindPsdActivity extends BaseActivity implements ICheckInfoView
方便了以後的維護

相關文章