一个苹果,三个属性,颜色,味道,是否是高档的。
如果认为红色且甜的是高档苹果,那么。颜色和味道是直接数据。是否高档为间接数据。
| 直接数据 | 间接数据 | |
|---|---|---|
| 数据来源 | 配置表,运行时生成 | 通过直接数据求解 |
| 是否可以修改 | 可以 | 否(通过直接数据求解) |
| 是否在网络传输 | 部分是,部分来自本地配置表 | 否(通过直接数据求解) |
| C# 中的数据 | 字段 | 属性(get) |
| 是否占用内存 | 是 | 否 |
| MVVM层次 | Model | ViewModel |
| 例如: | ||
| 苹果 | 颜色,味道 | 是否高档 |
| 药水 | 堆叠数量,单价 | 总价 |
| 角色 | 最大连跳次数,当前连跳次数 | 能否跳跃 |
直接属性和间接属性的区分是按照策划设计来的。表现为一个数据对另一组数据的依赖性。
区分直接数据和间接数据能有效直观的对代码逻辑分层。
直接数据通常在M层。不包含逻辑。
间接数据在VM层。包含求解逻辑,对Model的数据修改逻辑。
通常VM层对象包含M接口。而VM层接口继承M接口,并通过包含M接口实现。
所以对View层来说,VM接口包含所有数据,而不关心数据来自哪里。
层层解耦,高内聚低耦合。