写点什么

Android 架构设计——MVC,flutterrow 居中

用户头像
Android架构
关注
发布于: 刚刚

目的




架构设计的目的是通过设计使程序模块化,做到模块内部的高聚合和模块之间的低耦合。提高开发效率,且能方便后续的测试及问题定位。但是对于不同量级,不同需求的 APP,适合的架构是视情况而定的,切不可硬套架构。


定义




MVC 是 Model View Controller 的缩写,它是指模型(model)-视图(view)-控制器(controller)这一设计架构。其中:


  • Model(模型层):负责数据的加载和存储

  • View(视图层):负责界面数据的显示,与用户进行交互

  • Controller(控制器层):负责逻辑业务的处理


流程





  • View 接受用户的请求,然后将请求传递给 Controller。

  • Controller 进行业务逻辑处理后,通知 Model 去更新。

  • Model 数据更新后,通知 View 去更新界面显示。


Android 中的 MVC




Android 中界面部分也采用了 MVC 框架:一般由 Activity 充当 Controller,XML 文件作为 View 层,再加上我们抽离出的 Model 层。

视图层(View)

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

控制层(Controller)

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

模型层(Model)

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

各层内容


Android MVC 小例子




下面来看一个简易的 demo 代码,它的功能是:点击屏幕上的刷新按键后,给出应用运行的时长。

代码

//Model 层


public class TimeModel {


private static final long START_TIME = System.currentTimeMillis();


public void update(ControllerActivity controllerActivity) {


//更新数据


String timeText = Double.toString((System.currentTimeMillis() - START_TIME)/1000.0);


//更新 UI


controllerActivity.setText(timeText);


}


}


<LinearLayout xmlns:android=


"http://schemas.android.com/apk/res/android"


android:layout_width="match_parent"


android:layout_height="match_parent"


android:orientation="vertical"


android:gravity="center">


<TextView


android:id=


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


"@+id/tv_show"


android:layout_width="wrap_content"


android:layout_height="wrap_content"


android:textSize="30sp"


android:text="@string/time_text"/>


<Button


android:id="@+id/btn_update"


android:layout_width="wrap_content"


android:layout_height="wrap_content"


android:text="@string/update_button"/>


</LinearLayout>


//Controller 层


public class ControllerActivity extends Activity {


private TimeModel timeModel;


private TextView textView;

用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
Android架构设计——MVC,flutterrow居中