MVC/MVP/MVVM浅析

前言

随着项目的需求增加,代码的堆积会造成整个程序臃肿不堪。那么就急切需要了解些实用的架构设计,优化代码结构以及增加扩展性。本文将介绍MVCMNPMVVM以及简要介绍下MVVM要使用到的DataBinding双向绑定。

MVC架构

Android原生开发采用XML文件实现页面布局,在Activity中利用Java编写业务逻辑,这种开发模式实际上已经采用了MVC的思想,分离视图和控制器。MVC模式(Model–view–controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。如下图所示:
``

  • 视图层(View):通常是Android的XML文件。
  • 控制层(Controller):Activity,Fragment等。
  • 模型层(Model):与数据相关的操作,如对数据库的操作、网络数据的获取等。

但实际上很多时候,Activity/Fragment也承担了视图层的部分功能。比如说有时候控件根据需求动态显示背景或者显示隐 藏等。也就是说控制层和视图层没有很好的解耦,结果就会如下图所示。

在这里插入图片描述

MVC代码Demo

定义一个Activity也就是控制层,当用户点击的时候将自己和Model层绑定并请求数据。

public interface OnResultListener {
   
   
    void onSuccess(String infor);
}
  public class MainActivity extends Activity implements OnResultListener, View.OnClickListener {
   
   
  
      private DataModel dataModel;
      private TextView result;
  
      @Override
      protected void onCreate(Bundle savedInstanceState) {
   
   
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
          dataModel = new DataModel();
      }
      
      @Override
      public void onClick(View v) {
   
   
          dataModel.getResult(this);
      }
  
      @Override
      public void onSuccess(String infor) {
   
   
          result.setText(infor);
      }
  }

模型层收到数据后,做耗时操作。耗时操作完毕,返回数据更新视图层。

public interface DataModel {
   
   
    void getResult(OnResultListener listener);
}
public class DataModelImpl implements DataModel {
   
   
    
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值