MVVM获取/设置与OOP

本文关键字:OOP 设置 获取 MVVM | 更新日期: 2023-09-27 18:30:03

通过学习大量关于MVVM模式的知识,我发现它非常有用,并解决了我们每天遇到的许多问题。

但我不明白OOP是怎么回事。OOP总是要求我们被封装,关心字段的隐藏(首先在构造函数中初始化它们,没有进一步的访问权限来设置它们),但如果我们用getter/setter属性定义几乎每个模型类,这就违反了OOP的规则。那么进展如何呢?在一个真正的MVVM应用程序中定义许多get/set类可以吗?

谢谢,Jacob

MVVM获取/设置与OOP

嗨,我不认为它打破了OOP的概念。我们通过公共属性公开数据成员。所以数据隐藏是存在的,类的用户不知道设置哪个属性将更改场景后面的数据。在属性的setter中,我们可以拥有验证逻辑和任何可以更改类状态的负责方法/属性链。所以封装和数据隐藏是存在的。

感谢

这里没有对比,MVVM是一种OOP设计模式。属性不会破坏OOP原理,它是封装原理的应用;即控制如何加入或修改对象数据。

封装并没有告诉我们要避免对象中的数据修改,它告诉我们要小心,要控制它

更多信息请点击此处

根据以上答案,MVVM并没有打破OOP,而是拥抱OOP。理想情况下,您应该尽可能地通过限制读/写特性并将内聚属性集封装到自己的对象中来减少软件的表面积。这会导致您的模型中有一些部分是不可变的。然而,如果您有编辑需求,那么在MVVM中遵循不可变数据模型(DDD/函数式编程概念)是非常困难的。