Android中的MVC


Android中的MVC


View层

UI的描述一般来说都是用的res中的那一堆xml


Controller层

Android的Controller基本上就Activity。个人觉得严格意义上讲,Activity还承担了一部分View跟Model之间的交接。


Model层

针对业务逻辑,进而开发的IO,NIO,DB,之类的操作都在这里。


MVC代码讲解


Controller层



 
 
  1. public class MainActivity extends Activity implements CalculatModelImpl.onCalculatListener{
  2. private EditText mTxt1, mTxt2;
  3. private TextView mResult;
  4. private Button mCal;
  5. private CalculatModelImpl mModel;
  6. @Override
  7. protected void onCreate(Bundle savedInstanceState) {
  8. super.onCreate(savedInstanceState);
  9. setContentView(R.layout.activity_main);
  10. mTxt1 = (EditText) findViewById(R.id.txt1);
  11. mTxt2 = (EditText) findViewById(R.id.txt2);
  12. mCal = (Button) findViewById(R.id.cal);
  13. mCal.setOnClickListener( new View.OnClickListener() {
  14. @Override
  15. public void onClick(View v) {
  16. mModel.calculate(Integer.valueOf(mTxt1.getText().toString()).intValue(),
  17. Integer.valueOf(mTxt2.getText().toString()).intValue(),
  18. MainActivity. this);
  19. }
  20. });
  21. mResult = (TextView) findViewById(R.id.txt_result);
  22. mModel = new CalculatModelImpl();
  23. }
  24. @Override
  25. public void onSuccess(int result) {
  26. mResult.setText( "success:" + result);
  27. }
  28. @Override
  29. public void onError() {
  30. mResult.setText( "failed...");
  31. }
  32. }

Activity实现了CalculatModelImpl.onCalculatListener,并在onCreate中,实例化了CalculatModelImpl,在mCal中设置Listener,做实际的运算。

这里Activity作为Controller,获取了Views,起了承载与View相关操作的转接。

通过实现CalculatModelImpl.onCalculatListener的方式处理Model层返回的结果。在View层更新UI。

在View.onClickListener中进行实质上的Model层的调用。

整个MVC的框架就出来了。


Model层



 
 
  1. public class CalculatModelImpl implements CalculatModel{
  2. public CalculatModelImpl() {
  3. }
  4. public interface onCalculatListener {
  5. public void onSuccess(int result);
  6. public void onError();
  7. }
  8. @Override
  9. public void calculate(int num1, int num2, onCalculatListener listener) {
  10. try {
  11. int result = num1 / num2;
  12. android.util.Log.e( "eee", "eee result = " + result + " num1 = " + num1 + " num2 = " + num2);
  13. listener.onSuccess(result);
  14. } catch(Exception e) {
  15. listener.onError();
  16. }
  17. }
  18. }

这里CalculatModelImpl实现了CalculatModel。在calculate中做了具体的逻辑处理。

这样,逻辑处理 就被完全封装在Model中.


小结

MVC有缺点!!!随着,界面的复杂性增加,Activity不仅要负责View的控制,还要负责Model与View之间的传递。

就会出现臃肿的代码。。。View层缺乏基本的控制,Controller又太多其他的工作。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值