我正在对各种平台上的设计模式进行小型研究,我在Java编程方面有先前经验。
在阅读这些帖子时:Android上的MVC模式和 Android中的MVC体系结构,
我有一个有趣的问题:为什么Java Swing MVC不能与Android开发模式相比?或者为什么我们不能说Android遵循MVC?(在整体“外观和感觉”的情况下)。
在一个答案中,有人将MVC澄清为:
Model:要渲染什么
View:如何渲染
Controller:事件、用户输入
好的,现在我理解的是:
Java Swing MVC:
在Java swing MVC中,
component
类是视觉环境中所有属性的抽象类。有一个称为controls
的专门关键字用于某些components
,例如按钮、列表等。所以,所有控件和组件都是MVC中的一部分Model。Container
继承component
。并且有几个LayoutManagers
定义布局和components
在container
中的位置。此外,还有必须注册的Listeners
和相应的EventSources
。所以,它们都是MVC中的View。实现
Listener interface methods
类,在其中放置我们的主要逻辑,并为每个事件提供一些EventClasses
。他们都是MVC中的Controller。
将所有这些示例放在一起形成一个图像;在swing MVC中,我们有:
Android设计模式(视觉化为MVC):
我认为这里的
widgets
和controls
是一样的。此外,还有其他一些EventSources
,它们都作为Model。View
包含viewgroups
(也包括几种layouts
)和Listener接口
。它们都是MVC中的View部分。同样的,在Swing MVC中,我们可以说
Listener接口方法
和活动都是Controller的一部分。
将所有内容放在一起形成一个图片; 在Android中,我们有:
根据上述比较,我认为以下相似之处:
Container
- 与View
相同Layout managers
- 与ViewGroup
相同Listeners
- 两种架构总体相同controls
- 总体上与widgets
相同Event delegation
(将适当的Listener与Event源注册,然后实现Listener的方法) - 两种架构总体相同
那么,有人可以解释一下哪些因素使Android设计模式不同于Java Swing MVC模式?
或者如果您认为它们是不同的东西(在用于开发的设计模式的上下文中),请解释原因?