Model和View、ViewModel介绍

本文介绍了使用MVVM架构构建项目时的分层结构,包括View、ViewModel和Model的角色。详细展示了如何创建一个包含Model类的项目目录,并提供了WelcomeModel的代码示例,该模型类具有一个Introduction属性并实现了数据绑定。

一、分层结构:

1、View负责前端展示,与ViewModel进行数据和命令的交互。
2、ViewModel,负责前端视图业务级别的逻辑结构组织,并将其反馈给前端。
3、Model,主要负责数据实体的结构处理,与ViewModel进行交互
根据上述的分层,我们来进行编码。
先建立一个完整三层结构的目录,如图,包含Model、View、ViewModel三层文件夹\

当然除了以上三个文件夹,我们还有会用到的文件夹如下:
Define ——用于存放我们设置的一些宏(#define)。
Model ——用于存放模型类(数据模型)。
NetworkManager ——用于存放网络请求类
Resources ——用于存放资源 例如xib,storyboard,图片,plist,音频,视频
Util ——用于存放我们定义的分类和扩展或者工具类
Vendors ——用于存放第三方框架或者第三方SDK文件
View ——用于存放视图类
ViewControllers ——用于存放视图控制器类
ViewModel ——用于存放视图模型类,及处理 View 和 Model 之间的业务逻辑
1、写一个Model,代码如下:
1 using GalaSoft.MvvmLight;
2 using System;
3 using System.Collections.Generic;
4 using System.Linq;
5 using System.Text;
6 using System.Threading.Tasks;
8 namespace MVVMLightDemo.Model
9 {
10 public class WelcomeModel : ObservableObject
11 {
12 private String introduction;
13 ///
14 /// 欢迎词
15 ///
16 public String Introduction
17 { get { return introduction; }
19 set { introduction = value;
RaisePropertyChanged(()=>Introduction); }
20 }
21 }
22 }

### Model-View-ViewModel 架构模式概述 Model-View-ViewModel (MVVM) 是一种软件架构设计模式,用于简化用户界面的开发。此模式最初由 Microsoft 定义为与 Windows Presentation Foundation (WPF) Silverlight 结合使用,并于 2005 年由 John Grossman 正式宣布[^3]。 #### 主要组成部分 - **Model**: 负责处理应用的数据逻辑部分。这可以是从数据库获取数据到执行复杂的业务操作的一切工作。 - **View**: 用户看到并与之交互的部分。它展示来自 ViewModel 的信息并发送用户的命令给 ViewModel 处理。 - **ViewModel**: 扮演着中间人的角色,在 View Model 之间传递消息。通过绑定机制,ViewModel 可以自动更新视图的状态变化而无需直接访问 UI 控件;同样地,当用户输入改变时也会通知模型层做相应调整[^1]。 #### 数据流 在 MVVM 中,基本的数据流动如下: - 视图接受用户输入后触发相应的事件或命令至 ViewModel[^2]。 - ViewModel 接收到来自 View 的请求并对 Model 层发起调用来获取所需资源或者修改状态。 - 当 Model 发生任何更改时,这些变更会反映回 ViewModel 上并通过双向绑定同步到 Views 显示出来。 这种分离使得开发者能够更容易测试应用程序的不同方面而不必担心其他模块的影响。例如,在 Android 开发中采用 MVP 或者 MVVM 模式的项目里,如果设备旋转导致 Activity 销毁重建,则只需要重新创建对应的 Presenter/ViewModel 实例即可恢复之前的状态而不是整个页面都需要重绘一次[^4]。 ```java // Example of a simple ViewModel class in Java for an Android app. public class MyViewModel extends ViewModel { private MutableLiveData<String> text; public LiveData<String> getText() { return text; } public void setText(String newText) { if (text == null) { text = new MutableLiveData<>(); } this.text.setValue(newText); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值