Android App的设计架构:MVC、MVP、MVVM的实现

本文旨在探讨Android应用程序设计架构,包括MVC、MVP和MVVM模式。MVC模式中,Activity兼备View和Controller角色,导致View和Controller难以分离。MVP模式通过Presenter实现View与Model的解耦,降低了Activity的负担。MVVM模式引入Data Binding Library,实现了View与ViewModel的双向绑定,简化了开发者的工作。
摘要由CSDN通过智能技术生成

目的

通过设计使程序模块化,做到模块内部的高聚合和模块之间的低耦合。这样做的好处是使得程序在开发的过程中,开发人员只需要专注于一点,提高程序开发的效率,并且更容易进行后续的测试以及定位问题。但设计不能违背目的,对于不同量级的工程,具体架构的实现方式必然是不同的,切忌犯为了设计而设计,为了架构而架构的毛病。

一、MVC模式

MVC全名是Model View Controller,如图,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。

其中M层处理数据,业务逻辑等;V层处理界面的显示结果;C层起到桥梁的作用,来控制V层和M层通信以此来达到分离视图显示和业务逻辑层。

在这里插入图片描述

Android中的MVC

其实Android本身就有mvc的例子,在Android中:

  • 视图层(View)

一般采用XML文件进行界面的描述,这些XML可以理解为Android App的View。使用的时候可以非常方便的引入。同时便于后期界面的修改。逻辑中与界面对应的id不变化则代码不用修改,大大增强了代码的可维护性。

  • 控制层(Controller)

Android的控制层的重任通常落在了众多的Activity的肩上。这句话也就暗含了不要在Activity中写代码,要通过Activity交割Model业务逻辑层处理,这样做的另外一个原因是Android中的Actiivity的响应时间是5s,如果耗时的操作放在这里,程序就很容易被回收掉。

  • 模型层(Model)

我们针对业务模型,建立的数据结构和相关的类,就可以理解为Android App的Model,Model是与View无关,而与业务相关的。例如,对数据库的操作、对网络等的操作都应该在Model里面处理,当然对业务计算等操作也是必须放在的该层的。

示例

视图层(View)
在Android开发中,xml布局文件就相当于视图层。

控制层(Controller)
在MVC模式中,控制层通常就是Activity,控制视图的显示与更新。

public class MainActivity extends Activity implements OnWeatherListener{
   

    private WeatherModel weatherModel;
    private EditText cityNOInput;
    private TextView city;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
   
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        weatherModel = new WeatherModelImpl();
        initView();
    }

    //初始化View
    private void initView() {
   
        cityNOInput = findViewById(R.id.et_city_no);
        city = findViewById(R.id.tv_city).setOnClickListener((view)->{
   
        	  weatherModel.getWeather(cityNOInput.getText().toString().trim(), this);
        });
    }

    @Override
    public void onSuccess(Weather weather) {
   
         WeatherInfo weatherInfo = weather.getWeatherinfo();
        city.setText(weatherInfo.getCity());
    }

    @Override
    public void onError()<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值