MVCの設計とメソッドの書き方について
オブジェクト指向およびMVCを学習する過程でオセロを作っています。
以下のようなプログラムがあるとき、ResetGameメソッド内のController.ResetGameData()はViewがControllerを直接操作してしまっている(MVCに反する)ことになるのでしょうか?
これに問題がある場合は良い設計の仕方も教えていただけるとありがたいです。
データの初期化を分離できればよかったのですが、リセットボタンを押したときに実行したい兼ね合いでこのような書き方になってしまうと思っての実装です。
※質問用に一部を抜粋しているので細かい書式は変えています。
class View
{
private void ResetGame() //ゲームを初期化し再描画
{
Controller.ResetGameData();
DrawLabelsText(Controller.Cells);
DrawPlayerLabel();
DrawStoneCount();
DrawCanPutPoint(Controller.SearchCanPutPoint());
}
private void ClickResetButton(object sender, EventArgs e)
{
if (MessageBox.Show("最初からプレイしますか?", "リセット", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
ResetGame();
}
}
}
class Controller
{
public void ResetGameData() //ゲームの設定を初期化
{
Cells.InitializeCellsState(); //全てのセルの初期化 CellInfoがModel
CurrentStone = CellStone.Black;
CurrentPlayer = Player.Player1;
PassCount = 0;
}
}