Java swing MVC与Android设计模式的比较
我正在对各种平台中的设计模式进行一项小型研究,我以前有使用Java编程的经验 在阅读这些帖子时:以及,Java swing MVC与Android设计模式的比较,java,android,swing,design-patterns,model-view-controller,Java,Android,Swing,Design Patterns,Model View Controller,我正在对各种平台中的设计模式进行一项小型研究,我以前有使用Java编程的经验 在阅读这些帖子时:以及, 我想到了一个有趣的问题:为什么Java swing MVC不能与Android开发模式相比?或者为什么我们不能说Android遵循MVC?(在整体“外观和感觉”的上下文中) 在一个回答中,有人将MVC澄清为: 模型:要渲染的内容 查看:如何渲染 控制器:事件,用户输入 嗯。那么现在我的理解是: Java Swing MVC: 在JavaSwingMVC中,组件类是所有组件的抽象类
我想到了一个有趣的问题:为什么Java swing MVC不能与Android开发模式相比?或者为什么我们不能说Android遵循MVC?(在整体“外观和感觉”的上下文中) 在一个回答中,有人将MVC澄清为:
- 模型:要渲染的内容
- 查看:如何渲染
- 控制器:事件,用户输入
- 在JavaSwingMVC中,
类是所有组件的抽象类 视觉环境中的属性。有一个独特的关键字叫做组件
用于一些控件
,如按钮、列表等。 因此,所有控件和组件都是MVC中模型的一部分组件
继承容器
。有几个 定义布局和组件位置的布局管理器组件
。还有容器
必须注册到 根据监听器
。因此,它们都是MVC中的视图事件源
- 类,该类实现了将主
逻辑和每个事件都有一些
。他们都是 MVC中控制器的一部分eventclass
- 我认为
与这里的小部件
相同。还有一些 其他控件
。它们都充当模型事件源
包具有视图
(其中还包含几种视图组
)和布局
。他们都是我们的一部分 在MVC中查看侦听器接口
- 与swing MVC一样,我们可以说监听器接口方法和活动是 控制器的一部分
根据以上比较,我考虑以下<强>相似性<强>:
-与容器
视图相同
-与布局管理器
视图组
-在两种体系结构中总体上相同侦听器
-总体上与控件
小部件相同
(向事件源注册适当的监听器,然后实现监听器的方法)-在两种体系结构中总体上相同事件委派
或者,如果您认为两者是不同的(在用于开发的设计模式的上下文中),那么请解释为什么?每个Swing JComponent都有一个负责显示组件的组件。虽然JComponent有一个paint方法,但只有用户派生的类直接使用它,而“标准”实现通常只是附加的UI。这允许非常容易地插入各种外观实现——不同的外观只提供不同的组件UI。很明显,组件是“模型”,UI是“视图”。Android并没有以非常明显的方式继承这种脱钩。例如,它的TextView看起来就像是一个类似的JLabel 然而,这不是使用MVC方法的唯一地方,对于其他一些特定情况,Android和Swing MVC非常相似。例如,Android
ListView
有一个模型(ListAdapter
),非常像SwingJList
有一个ListModel
)。在这两种情况下,模型提供数据,而组件本身提供显示的可能性。可能的区别在于,Swing有更多的组件具有这种解耦的数据和表示<当Android不提供现成组件时,code>JTable和JTree
具有类似的模型。根本没有树,是在Swing中调用的,与JTable
不同
失效和重新绘制的一般方法没有太大区别,在这两种框架中,只有专用主线程可以接触组件。此外,事件侦听器(可能是其他组“控制器”)在Java和Android中非常相似,它们之间的所有差异可能都只能称为“细微的”
Swing和Android之间的容器和布局管理也非常相似,主要区别在于Swing比Androids有更多可能的its实现可供选择(类,例如,虽然派生自ViewGroup
,但不是通用布局管理器)。另外,Android布局的一部分是用XML编码的,而Swing通常只使用纯Java。如果布局管理器也是一种“控制器”,对诸如调整大小或重新定向之类的事件做出响应,那么这一部分也是非常类似的。但是,我不确定布局管理器是否真的是“控制器”,因为它们更新的视图多于模型
一般来说,Swing似乎更适合于大屏幕上显示的大型复杂GUI,而Android更适合于只有几个可见组件的小屏幕,大到可以用手指操作而无需触控笔。MVC的关键功能是在三个组件之间分离关注点:
- 模型负责维护数据的内部表示
- 景色很美