有可能在Java中为Android实现模型-视图-控制器模式吗?
或者它已经通过活动实现了吗?或者有没有更好的方法来实现Android的MVC模式?
有可能在Java中为Android实现模型-视图-控制器模式吗?
或者它已经通过活动实现了吗?或者有没有更好的方法来实现Android的MVC模式?
当前回答
模型视图控制器(MVC)
描述:
当我们要在软件开发中主要进行大型项目时,采用MVC模式 通常使用,因为它是一种通用的组织方式 项目。 新的开发人员可以很快适应项目 帮助开发大型项目和跨平台。
MVC模式本质上是这样的:
模型:显示什么。这可以是数据源(例如:服务器,原始 应用程序中的数据) 视图:显示的方式。这可以是xml。因此,它是作为一个 表示过滤器。视图附加到它的模型(或模型部分) 并获取演示所需的数据。 控制器:处理类似用户输入的事件。这就是活动
MVC的重要特性:我们可以修改模型或视图或控制器,但不影响其他的
比如我们改变视图的颜色,视图的大小或位置 风景。这样做不会影响模型或控制器 假设我们更改模型(而不是从服务器获取的数据) 从资产中获取数据)仍然不会影响视图和 控制器 假设我们改变了控制器(活动中的逻辑),它不会影响 模型和视图
其他回答
使用布局、资源、活动和意图创建Android UI是MVC模式的实现。请参阅以下链接了解更多信息- http://www.cs.otago.ac.nz/cosc346/labs/COSC346-lab2.2up.pdf
PDF镜像
模型视图控制器(MVC)
描述:
当我们要在软件开发中主要进行大型项目时,采用MVC模式 通常使用,因为它是一种通用的组织方式 项目。 新的开发人员可以很快适应项目 帮助开发大型项目和跨平台。
MVC模式本质上是这样的:
模型:显示什么。这可以是数据源(例如:服务器,原始 应用程序中的数据) 视图:显示的方式。这可以是xml。因此,它是作为一个 表示过滤器。视图附加到它的模型(或模型部分) 并获取演示所需的数据。 控制器:处理类似用户输入的事件。这就是活动
MVC的重要特性:我们可以修改模型或视图或控制器,但不影响其他的
比如我们改变视图的颜色,视图的大小或位置 风景。这样做不会影响模型或控制器 假设我们更改模型(而不是从服务器获取的数据) 从资产中获取数据)仍然不会影响视图和 控制器 假设我们改变了控制器(活动中的逻辑),它不会影响 模型和视图
厌倦了Android上的MVx灾难,我最近做了一个提供单向数据流的小库,类似于MVC的概念:https://github.com/zserge/anvil
基本上,您有一个组件(活动、片段和视图组)。在内部定义视图层的结构和样式。此外,您还可以定义数据应该如何绑定到视图。最后,您可以在同一位置绑定侦听器。
然后,一旦你的数据被改变——全局的“render()”方法将被调用,你的视图将会被最新的数据巧妙地更新。
下面是一个组件的例子,为了代码紧凑,组件中包含了所有内容(当然,模型和控制器可以很容易地分开)。这里“count”是一个模型,view()方法是一个视图,“v -> count++”是一个控制器,它监听按钮点击并更新模型。
public MyView extends RenderableView {
public MyView(Context c) {
super(c);
}
private int count = 0;
public void view() {
frameLayout(() -> { // Define your view hierarchy
size(FILL, WRAP);
button(() -> {
textColor(Color.RED); // Define view style
text("Clicked " + count); // Bind data
onClick(v -> count++); // Bind listeners
});
});
}
使用分离的模型和控制器,它看起来像:
button(() -> {
textColor(Color.RED);
text("Clicked " + mModel.getClickCount());
onClick(mController::onButtonClicked);
});
在这里,点击每个按钮的数量都会增加,然后“render()”将被调用,按钮文本将被更新。
如果使用Kotlin: http://zserge.com/blog/anvil-kotlin.html,语法将变得更加舒适。此外,对于没有lambdas的Java还有其他语法。
这个库本身是非常轻量级的,没有依赖关系,不使用反射等等。
(声明:我是这个库的作者)
根据Xamarin团队的解释(在iOS MVC中“我知道这看起来很奇怪,但等一下”):
模型(数据或应用程序逻辑), 视图(用户界面)和 控制器(后面的代码)。
我可以这样说:
Android上的模型只是一个可打包对象。视图是XML布局,控制器是(活动+它的片段)。
*这只是我个人的观点,不是来自任何资源或书籍。
你可以在Android中实现MVC,但它不是“原生支持”的,需要一些努力。
也就是说,我个人倾向于认为MVP对于Android开发来说是一种更简洁的架构模式。说到MVP,我的意思是:
我也在这里发布了一个更详细的答案。
在尝试了Android中MVC/MVP实现的各种方法后,我想出了一个合理的架构模式,我在这篇文章中描述了它:Android中的MVP和MVC架构模式。