页首Html代码

Android MVC MVP MVVM (二)

MVP模型

 

 View主要是Activity,Fragment

MVP和MVC的差别

1.Model和View不再直接通信,通过中间层Presenter来实现。

2.Activity的功能被简化,不再充当控制器,主要负责View层面的工作。

 

 

 

 

 MVPPresenter

public class MVPPresenter {
    private IMVPView view;
    private MVPModel model;

    public MVPPresenter(IMVPView view) {
        this.view=view;
        model=new MVPModel();
    }

    public void getData(String accountName) {
        model.getAccountData(accountName, new ResultCallback() {
            @Override
            public void onSuccess(Account account) {
                view.showSuccessPage(account);
            }

            @Override
            public void onFailure() {
                view.showFailurePage();
            }
        });
    }

}

IMVPView

public interface IMVPView {
    String getUserInput();

    void showSuccessPage(Account account);

    void showFailurePage();
}

MVPModel

public class MVPModel {
    public void getAccountData(String accountName, ResultCallback cb) {
        Random random=new Random();
        boolean isSuccess=random.nextBoolean();
        if (isSuccess) {
            Account account = new Account();
            account.setName(accountName);
            account.setLevel(100);
            cb.onSuccess(account);
        } else {
            cb.onFailure();
        }
    }
}

MVPActivity

public class MVPActivity extends AppCompatActivity implements IMVPView{
    private TextView tvResult;
    private EditText etAccount;
    private MVPPresenter presenter;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.test);
        tvResult = findViewById(R.id.tvResult);
        etAccount = findViewById(R.id.etAccount);
        presenter = new MVPPresenter(this);
    }

    public void ButtonClick(View view) {
        presenter.getData(getUserInput());
    }


    @Override
    public String getUserInput() {
        return etAccount.getText().toString();
    }

    @Override
    public void showSuccessPage(Account account) {
        tvResult.setText("用户账号: "+account.getName()+ " | "+"用户等级: "+account.getLevel());
    }

    @Override
    public void showFailurePage() {
        tvResult.setText("获取数据失败");
    }
}

 

posted @ 2019-10-23 10:57  noigel  阅读(194)  评论(0编辑  收藏  举报
js脚本