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