假设我有三个类:JPSModel
,JPSView extends JPanel
和JPSController
。 JPSView
覆盖paintComponent()
,后者在位置zoomFactor
的特定(renderPositionX, renderPositionY)
处绘制图像。
用户可以更改的zoomFactor
,renderPositionX
和renderPositionY
是JPSView
还是JPSModel
?如何计算像zoomFactor
这样的renderPositionX
,renderPositionY
和setZoomFit()
的方法?
最佳答案
它们都应该在JPSView
中,因为它们与要显示的“什么”(数据)无关。它们都与要显示数据的“位置”(位置)和“方式”(缩放比例)有关。
请记住,Model
是持久的,除非它是ViewModel
,否则您绝不会将视图信息与之一起保存。举一个例子,大多数PDF阅读器为您提供了一个选项,可以在与上次关闭时完全相同的页面(以及相同的缩放倍数)处重新打开PDF文件。但是,这并不意味着它将页数和缩放系数保存在PDF本身中。
为了适应这种情况,如果您想保留与“上次查看为”相关的视图信息,则应创建一个单独的JPSViewModel
,理想情况下,应将其保留在应用程序本地数据库中,而不要与正在处理的文件一起保留。