我计划为我的Android应用程序实现MVVM架构设计模式。我在网上看到它将帮助我实现有效的关注点分离,并轻松编写数据模型,UI等测试用例。需要一些见解/建议。
答案 0 :(得分:24)
那么,要了解如何有效地使用MVVM,请从Android MVVM Design Pattern Examples
开始在这里你会找到帖子:
我是Android-Binding的开发者。就像@Brentley所说的那样 一个非常新的项目,但我希望得到更多的嗡嗡声和经验 它可以改进。回到你的问题,我写了一些 关于MVVM的简单介绍/教程与android-binding:
- Android MVVM Tutorials (with android binding)
- Introduction to Android Binding (codeproject)
- Model Validation in Android Binding (codeproject)
- Wiki in project homepage
潜在的采用者也请注册project discussion group.
阅读整个主题。您会注意到MVVM
是一个相对较新的框架,强烈建议您与Google&#sp; Data Binding
库和依赖注入库(如Roboguice
或{}合作使用它。 {3}} ...
......但最好的就是这个:
作者通过示例解释使用MVVM和数据绑定库 - 我的意思是他自己创建的应用程序。他总结道:
现在要知道这种方法是否是开发应用程序的正确方法还为时尚早,但是这个实验让我有机会看到未来项目的可能性之一。这是我绝对想要玩的东西。
Model-View-ViewModel
很有意思,因为在传统的Android架构中,控制器会将数据推送到视图中。您可以在“活动”中找到该视图,然后在其上设置内容。
使用MVVM,您的ViewModel
会更改某些内容,并通知绑定数据框架有关已更改的内容。然后,框架会自动更新绑定到该内容的任何视图。
这两个组件只是通过数据和命令接口松散耦合。
使用MVVM
的下一个方法确实可以测试。来自Approaching Android with MVVM. Building an MVVM architectured application using the Data Binding Library
由于
ViewModel
不再依赖View
,因此您可以测试ViewModel
,而View
甚至不存在//create connection, with a connection string using(var conn = new SqlConnection(connectionString)) { try { conn.Open(); } catch(Exception ex) { //Handle exception } if(conn.State == System.Data.ConnectionState.Open) { var commandText = "SELECT Ad FROM OGRENCILER WHERE OgrenciKartID=@id"; //"using" helps in automatically disposing of the object once it's done using(var comm = new SqlCommand(commandText, conn)) { //one of the proper ways to add a parameter, which also sets the value comm.Parameters.Add("@id", SqlDbType.Int).Value = _kimilik; //the rest is correct, assuming the connection can be established and this is valid SQL (correct DB structure) object result = null; try { result = comm.ExecuteScalar(); } catch(Exception ex) { //handle exception } if(result != null) { var adId = result.ToString(); adLabel.Text = adId; } } conn.Close(); } }
。通过对其他依赖项进行适当的依赖注入,可以非常直接地进行测试。例如,不是将VM绑定到实际视图,而是可以在测试用例中创建VM,为其提供一些数据,然后在其上调用操作,以确保正确转换数据。 (...)所有这些都可以在不必与实际视图交互的情况下完成。
另请阅读:MVVM on Android: What You Need to Know
希望有所帮助