Java 我应该把这些字段放在MVC模型的哪里?

Java 我应该把这些字段放在MVC模型的哪里?,java,swing,model-view-controller,jpanel,paintcomponent,Java,Swing,Model View Controller,Jpanel,Paintcomponent,假设我有三个类:JPSModel,JPSView扩展了JPanel,以及jpscoontrollerJPSView覆盖paintComponent(),它在位置的某个zoomFactor处绘制图像(renderPositionX,renderPositionY) 用户可以更改的zoomFactor、renderPositionX和renderPositionY是否应位于JPSView或JPSModel?计算zoomFactor、renderPositionX和renderPositionY的方法

假设我有三个类:
JPSModel
JPSView扩展了JPanel
,以及
jpscoontroller
JPSView
覆盖
paintComponent()
,它在
位置的某个
zoomFactor
处绘制图像(renderPositionX,renderPositionY)


用户可以更改的
zoomFactor
renderPositionX
renderPositionY
是否应位于
JPSView
JPSModel
?计算
zoomFactor
renderPositionX
renderPositionY
的方法怎么样,比如
setZoomFit()

它们都应该在
JPSView
中,因为它们与要显示的“内容”(数据)无关;它们都与数据显示的“位置”和“方式”(以何种缩放因子)有关

请记住,
Model
是持久化的,除非它是
ViewModel
,否则您永远不会将视图信息与之一起保存。举个例子,大多数PDF阅读器都为您提供了一个选项,可以在与上次关闭PDF文件时完全相同的页面(以及相同的缩放因子)上重新打开PDF文件。但是,这并不意味着它将页码和缩放因子保存在PDF本身中


为了迎合这种情况,如果你想坚持“最后一次被视为”相关视图信息应创建一个单独的
JPSViewModel
,理想情况下,您应该将其保存在应用程序本地数据库中,而不是与正在处理的文件一起。

对模型投1票。
zoomFactor
renderPositionX/Y
将取决于。如果这些值只对视图有意义,那么它们应该保留在视图中。我会把
ZoomFit
放在模型中…我会说实际位置,“物理”位置应该在模型中,缩放因子应该是控件的一部分,因为模型不应该真正关心控件/视图的缩放程度。我想你是缺乏上下文。在我们真正回答这个问题之前,我们需要了解更多。模型实际负责什么?这个观点的原因是什么?对于不同的实现,这将如何改变?这取决于您的模型是数据模型还是视图模型。@HoverCraftFullOfels、renderPositionX和renderPositionY只是drawImage()应该渲染图像的位置,而不是图像在文档中的位置或任何东西。这会改变你的观点吗?