有可能在Java中为Android实现模型-视图-控制器模式吗?

或者它已经通过活动实现了吗?或者有没有更好的方法来实现Android的MVC模式?


当前回答

根据Xamarin团队的解释(在iOS MVC中“我知道这看起来很奇怪,但等一下”):

模型(数据或应用程序逻辑), 视图(用户界面)和 控制器(后面的代码)。

我可以这样说:

Android上的模型只是一个可打包对象。视图是XML布局,控制器是(活动+它的片段)。

*这只是我个人的观点,不是来自任何资源或书籍。

其他回答

MVC- Android上的架构 在android中最好遵循任何MVP而不是MVC。但仍然根据问题的答案这是可以解的

描述及指引

     Controller -
        Activity can play the role.
        Use an application class to write the
        global methods and define, and avoid
        static variables in the controller label
    Model -
        Entity like - user, Product, and Customer class.
    View -
        XML layout files.
    ViewModel -
        Class with like CartItem and owner
        models with multiple class properties
    Service -
        DataService- All the tables which have logic
        to get the data to bind the models - UserTable,
        CustomerTable
        NetworkService - Service logic binds the
        logic with network call - Login Service
Helpers -
        StringHelper, ValidationHelper static
        methods for helping format and validation code.
SharedView - fragmets or shared views from the code
        can be separated here

AppConstant -
        Use the Values folder XML files
        for constant app level

注1:

这是你可以施展的魔法。在对代码段进行分类之后,编写一个基本接口类,比如IEntity和IService。声明通用方法。现在创建抽象类BaseService,声明您自己的方法集,并分离代码。

注2:如果您的活动呈现多个模型,那么与其在活动中编写代码/逻辑,不如将视图划分为片段。那就好多了。因此,如果将来需要在视图中显示更多的模型,请再添加一个片段。

注3:代码分离是非常重要的。体系结构中的每个组件都应该是独立的,而不是相互依赖的逻辑。如果碰巧你有一些相关的逻辑,那么在两者之间写一个映射逻辑类。这对你将来会有帮助。

使用布局、资源、活动和意图创建Android UI是MVC模式的实现。请参阅以下链接了解更多信息- http://www.cs.otago.ac.nz/cosc346/labs/COSC346-lab2.2up.pdf

PDF镜像

没有普遍唯一的MVC模式。MVC是一个概念,而不是一个可靠的编程框架。你可以在任何平台上实现你自己的MVC。只要你坚持以下基本思想,你就是在实现MVC:

模型:渲染什么 视图:如何渲染 控制器:事件,用户输入

也可以这样考虑:当您为模型编程时,模型不应该担心呈现(或特定于平台的代码)。模型会对视图说,我不在乎你的渲染是Android, iOS还是Windows Phone,这是我需要你渲染的。 视图将只处理特定于平台的呈现代码。

当您使用Mono共享模型以开发跨平台应用程序时,这一点特别有用。

我发现在Android上实现MVC最好的资源是这篇文章:

我在自己的一个项目中采用了同样的设计,效果非常好。我是Android的初学者,所以我不能说这是最好的解决方案。

我做了一个修改:我实例化了应用程序类中每个活动的模型和控制器,这样当横向-纵向模式更改时就不会重新创建这些模型和控制器。

我认为最有用的简单解释是: http://www.cs.otago.ac.nz/cosc346/labs/COSC346-lab2.2up.pdf

从我在这里看到和读到的所有东西来看,实现所有这些东西都变得更加困难,并且与android的其他部分不太适应。

让一个活动实现其他监听器已经是标准的Android方式。最无害的方法是像幻灯片所描述的那样添加Java观察者,并将onClick和其他类型的操作分组到仍然在Activity中的函数中。

Android的方式是Activity两者都做。与之斗争并不能真正使扩展或将来的编码变得更容易。

我同意第二篇文章。它已经实现了,只是不是人们习惯的方式。不管它是否在同一个文件中,已经有分离了。不需要创建额外的分隔来适应其他语言和操作系统。