MVP——让码代码的累,让看代码的爽!【未完】

MVP

念叨了许久的MVP,才发现原来最有价值球员也是MVP。闲话不多聊,正如题目一样,MVP通过增加编码量来换取代码清晰度、可维护度的提升。以往,基本上所有的业务逻辑都陈列在Activity中,让activity变得非常的庞大。

1.优缺点

优点

  • 解耦,使视图层不在直接与model层接触,而是通过中间presenter接口进行处理完业务逻辑的数据直接传递给视图层,从而实现解耦。
  • 解放视图层,许多业务逻辑代码会放在p层,让v层代码量减少,只负责控制视图显示。
  • 隐藏代码,许多业务逻辑代码放在p层,对外只提供接口传递数据
  • 让android端的测试更方便,可以分层测试了,不用全部运行项目就可以进行测试了
  • 让开发者思路变得更加清晰,代码也是一目了然。
  • D
  • D
  • D
  • D
  • ….
    缺点

  • 代码量暴增,因为增加了较多的接口以及presenter类。所以较小的项目不适合采用此架构模式,反而会让项目变得复杂,徒增工作量。

  • D
  • D
  • D
  • D

  • ……

【待续】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的计算器 MVP 模式的代码示例: 首先是 `Model` 层: ```java public class CalculatorModel { public double calculate(double num1, double num2, String operator) { double result = 0; switch (operator) { case "+": result = num1 + num2; break; case "-": result = num1 - num2; break; case "*": result = num1 * num2; break; case "/": result = num1 / num2; break; } return result; } } ``` 然后是 `View` 层: ```java public interface CalculatorView { void showResult(double result); } ``` 最后是 `Presenter` 层: ```java public class CalculatorPresenter { private CalculatorModel calculatorModel; private CalculatorView calculatorView; public CalculatorPresenter(CalculatorView calculatorView) { this.calculatorView = calculatorView; calculatorModel = new CalculatorModel(); } public void calculate(double num1, double num2, String operator) { double result = calculatorModel.calculate(num1, num2, operator); calculatorView.showResult(result); } } ``` 在 `Activity` 或 `Fragment` 中,我们可以这样使用: ```java public class CalculatorActivity extends AppCompatActivity implements CalculatorView { private CalculatorPresenter calculatorPresenter; // 省略其它代码 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_calculator); calculatorPresenter = new CalculatorPresenter(this); // 省略其它代码 } // 省略其它代码 public void onCalculateClicked(View view) { double num1 = Double.parseDouble(editTextNum1.getText().toString()); double num2 = Double.parseDouble(editTextNum2.getText().toString()); String operator = spinnerOperator.getSelectedItem().toString(); calculatorPresenter.calculate(num1, num2, operator); } @Override public void showResult(double result) { textViewResult.setText(String.valueOf(result)); } } ``` 这样,我们就成了一个简单的 MVP 模式的计算器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值