假设我有三个课程:JPSModel
,JPSView extends JPanel
和JPSController
。 JPSView
会覆盖paintComponent()
,它会在位置zoomFactor
的某个(renderPositionX, renderPositionY)
处绘制图片。
用户可以更改的zoomFactor
,renderPositionX
和renderPositionY
是JPSView
还是JPSModel
?如zoomFactor
计算renderPositionX
,renderPositionY
和setZoomFit()
的方法呢?
答案 0 :(得分:2)
它们都应该在JPSView
,因为它们与“什么”(数据)无关;它们都与数据的“where”(位置)和“how”(以什么缩放因子)相关。
请记住Model
已保留,除非是ViewModel
,否则您永远不会保存视图信息。举个例子,大多数PDF阅读器都提供了一个选项,可以在完全相同的页面(以及相同的缩放系数)上重新打开PDF文件,就像上次关闭它一样。但是,这并不意味着它会在PDF本身中保存页码和缩放因子。
为了迎合这种情况,如果您希望保留“上次查看”相关视图信息,则应创建一个单独的JPSViewModel
,您应该理想地在应用程序本地数据库中保留,而不是与它正在处理的文件一起保留。