【问题标题】:How is data binding different from using an interface?数据绑定与使用接口有何不同?
【发布时间】:2017-09-27 18:24:44
【问题描述】:
使用 MVVM,ViewModel 取代了 Presenter 来驱动 View。
不同之处在于 ViewModel 使用 DataBinding 驱动视图,
而 Presenter 通过界面驱动视图。
引用自this site.
我找不到好的解释:
- 什么是接口?
- 什么是数据绑定?
- 它们有何不同?
- 他们的差异如何转化为 MVVM 和 MVP?
注意:理想的答案与 iOS/Swift 中的实现有关,但我仍然有兴趣阅读那些没有的答案。
【问题讨论】:
标签:
design-patterns
mvvm
architecture
mvp
【解决方案1】:
- 什么是接口?
在这种情况下,接口将是一个代表视图抽象的面向对象的接口。演示者通过接口与视图进行通信,因为它促进了松散耦合的设计。这允许将不同的具体视图实现连接到演示者,最常见的是用于测试的假冒。
- 什么是数据绑定?
数据绑定是一种机制,通常由开发环境/语言提供,可自动同步 UI 控件和代码构造(例如对象或变量)。这样做的好处是开发人员可以避免编写自己的(通常是乏味的)代码来保持 UI 控件和内存中的对象同步。
- 它们有何不同?
接口是面向对象编程语言的一个特性。数据绑定是开发环境/语言的一项功能。
- 他们的差异如何转化为 MVVM 和 MVP?
这将取决于底层实现技术。我对 iOS/Swift 不熟悉,因此无法在此处具体评论。但是,我会看到演示者/视图模型如何与视图通信的关键区别。在 MVP 中,我希望看到代码设置和获取 UI 值并通过事件响应用户操作。从代码的角度来看,这一切都是非常手动的。在 MVVM 中,我希望看到更少的此类代码,因为交互将使用开发环境的数据绑定机制进行连接。通常,这是一个设计时过程。