有可能在Java中为Android实现模型-视图-控制器模式吗?
或者它已经通过活动实现了吗?或者有没有更好的方法来实现Android的MVC模式?
有可能在Java中为Android实现模型-视图-控制器模式吗?
或者它已经通过活动实现了吗?或者有没有更好的方法来实现Android的MVC模式?
当前回答
没有普遍唯一的MVC模式。MVC是一个概念,而不是一个可靠的编程框架。你可以在任何平台上实现你自己的MVC。只要你坚持以下基本思想,你就是在实现MVC:
模型:渲染什么 视图:如何渲染 控制器:事件,用户输入
也可以这样考虑:当您为模型编程时,模型不应该担心呈现(或特定于平台的代码)。模型会对视图说,我不在乎你的渲染是Android, iOS还是Windows Phone,这是我需要你渲染的。 视图将只处理特定于平台的呈现代码。
当您使用Mono共享模型以开发跨平台应用程序时,这一点特别有用。
其他回答
根据Xamarin团队的解释(在iOS MVC中“我知道这看起来很奇怪,但等一下”):
模型(数据或应用程序逻辑), 视图(用户界面)和 控制器(后面的代码)。
我可以这样说:
Android上的模型只是一个可打包对象。视图是XML布局,控制器是(活动+它的片段)。
*这只是我个人的观点,不是来自任何资源或书籍。
没有实现的MVC体系结构,但是存在一组库/示例来实现MVP(模型-视图-呈现器)体系结构。
请查看这些链接:
https://github.com/sockeqwe/mosby https://github.com/android10/Android-CleanArchitecture https://github.com/antoniolg/androidmvp
谷歌增加了一个Android架构MVP的例子:
https://github.com/googlesamples/android-architecture
我认为最有用的简单解释是: http://www.cs.otago.ac.nz/cosc346/labs/COSC346-lab2.2up.pdf
从我在这里看到和读到的所有东西来看,实现所有这些东西都变得更加困难,并且与android的其他部分不太适应。
让一个活动实现其他监听器已经是标准的Android方式。最无害的方法是像幻灯片所描述的那样添加Java观察者,并将onClick和其他类型的操作分组到仍然在Activity中的函数中。
Android的方式是Activity两者都做。与之斗争并不能真正使扩展或将来的编码变得更容易。
我同意第二篇文章。它已经实现了,只是不是人们习惯的方式。不管它是否在同一个文件中,已经有分离了。不需要创建额外的分隔来适应其他语言和操作系统。
令人惊讶的是,这里没有一个帖子回答这个问题。它们要么太笼统,模糊,不正确,要么没有解决在android中的实现。
在MVC中,View层只知道如何显示用户界面(UI)。如果需要任何数据,则从Model层获取。但是视图并不直接要求模型去查找数据,它是通过控制器来做的。因此控制器调用模型为视图提供所需的数据。一旦数据准备好了,控制器就通知视图,可以从模型中获取数据了。现在视图可以从模型中获取数据。
这个流程可以总结如下:
值得注意的是,视图可以通过控制器(也称为被动MVC)了解模型中数据的可用性,或者通过向模型注册可观察对象来观察模型中的数据,这就是活动MVC。
在实现部分,首先想到的是视图应该使用什么android组件?活动还是片段?
答案是没有关系,两者都可以使用。View应该能够在设备上呈现用户界面(UI),并响应用户与UI的交互。Activity和Fragment都为此提供了所需的方法。
在本文使用的示例应用程序中,我使用了Activity作为视图层,但也可以使用Fragment。
完整的示例应用程序可以在我的GitHub repo的“mvc”分支中找到。
我还通过一个例子说明了在android中使用MVC架构的利弊。
对于那些感兴趣的人,我已经开始了一系列关于android应用程序架构的文章,在这里我比较了不同的架构,即MVC, MVP, MVVM,通过一个完整的工作应用程序开发android应用程序。
你可以在Android中实现MVC,但它不是“原生支持”的,需要一些努力。
也就是说,我个人倾向于认为MVP对于Android开发来说是一种更简洁的架构模式。说到MVP,我的意思是:
我也在这里发布了一个更详细的答案。
在尝试了Android中MVC/MVP实现的各种方法后,我想出了一个合理的架构模式,我在这篇文章中描述了它:Android中的MVP和MVC架构模式。