1

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

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

谢谢,雅各布

4

3 回答 3

2

嗨,我不认为它打破了 OOP 概念。我们通过公共属性公开数据成员。所以数据隐藏就在那里,类的用户不知道设置哪个属性会改变幕后的哪些数据。在属性的设置器中,我们可以有验证逻辑和任何可以改变类状态的负责方法/属性链。所以封装和数据隐藏就在那里。

谢谢

于 2013-09-02T09:17:55.943 回答
1

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

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

更多关于这里的信息

于 2013-09-02T09:24:49.733 回答
1

根据上述答案,MVVM 不会破坏它所包含的 OOP。理想情况下,您应该通过限制读/写性质并将内聚的属性集封装到它们自己的对象中来减少软件的表面积。这可能会导致您的模型的某些部分是不可变的。但是,如果您有编辑需求,在 MVVM 中遵循不可变数据模型(DDD/函数式编程概念)是非常困难的。

于 2013-09-02T09:27:58.187 回答