我試圖將WindowsForm重構爲MVP模式。該應用程序是一個瓷磚編輯器。窗體有一個自定義控件,我在其中顯示地圖(TileDisplay)。從文件加載映射後,我調用一個名爲「AdjustHScrollBar」的方法來重新調整水平滾動條到tilemap大小。我不是100%確定如何根據MVP分割方法。 首先原來沒有MVP方法:澄清需要MVP模式中的演示者應該知道的內容
private void AdjustHScrollBar()
{
if (tileMap.GetWidthInPixels() > tileDisplay.Width)
{
hTileScrollBar.Visible = true;
hTileScrollBar.Minimum = 0;
hTileScrollBar.Maximum = tileMap.GetWidth();
}
else
{
hTileScrollBar.Visible = false;
}
}
這是演示使用MVP後的方法:
private void AdjustHScrollBar()
{
if (mainFormModel.TileMap.GetWidthInPixels() > mainFormView.GetTileDisplayWidth())
{
mainFormView.EnableHScrollBar(mainFormModel.TileMap.GetWidth());
}
else
{
mainFormView.DisableHScrollBar();
}
}
視圖不知道主持人。我的問題是主持人是否應該知道視圖的控制。在我的實現中,它不會 - 這就是GetTileDisplayWidth,EnableHScrollBar和DisableHScrollBar方法的原因。 Afaik這是正確的方式,但是如果我必須從視圖中爲我需要的每一個屬性製作一個方法,這似乎變成了很多工作。基本上,垂直滾動條的「相同」代碼用於例如(所以這6種方法可以重新調整滾動條)。
感謝您的回答。 – 2013-03-23 22:35:34
我在演示者中這樣做的原因是它取決於模型(地圖大小)。 – 2013-03-23 22:44:14