1

假设我有三个类:JPSModelJPSView extends JPanelJPSControllerJPSViewoverrides paintComponent(),它在某个zoomFactor位置绘制图像(renderPositionX, renderPositionY)

zoomFactor用户可以更改的, renderPositionX, 和renderPositionY, 应该在JPSView还是JPSModel? 计算zoomFactor,renderPositionXrenderPositionYlike的方法setZoomFit()呢?

4

1 回答 1

2

它们都应该在,JPSView因为它们与要显示的“什么”(数据)无关;它们都与要显示数据的“位置”(位置)和“如何”(以何种缩放系数)有关。

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

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

于 2013-05-16T04:33:53.333 回答