MVP (Model-View-Presenter) パターンは、ユーザーインターフェース (UI) ロジックとビジネスロジックを分離し、アプリケーションの保守性とテスト性を向上させる設計パターンです。特にUIの要素が頻繁に変化する場合に有効で、視覚部分 (View) とロジック部分 (Presenter) の結びつきを最小限にします。
MVPパターンの目的は、以下のようにロジックを明確に分けることで、コードのテストが容易になり、UIの変更が頻繁に発生してもビジネスロジックに影響を与えないようにすることです:
public class PlayerModel {
public string Name { get; set; }
public int Score { get; set; }
}
public interface IPlayerView {
void UpdatePlayerInfo(string playerName, int playerScore);
}
public class PlayerView : MonoBehaviour, IPlayerView {
public Text playerNameText;
public Text playerScoreText;
public void UpdatePlayerInfo(string playerName, int playerScore) {
playerNameText.text = "Player: " + playerName;
playerScoreText.text = "Score: " + playerScore.ToString();
}
}
public class PlayerPresenter {
private IPlayerView view;
private PlayerModel model;
public PlayerPresenter(IPlayerView view, PlayerModel model) {
this.view = view;
this.model = model;
}
public void UpdateView() {
view.UpdatePlayerInfo(model.Name, model.Score);
}
public void SetPlayerData(string playerName, int playerScore) {
model.Name = playerName;
model.Score = playerScore;
UpdateView();
}
}
public class GameManager : MonoBehaviour {
private PlayerPresenter playerPresenter;
void Start() {
PlayerModel playerModel = new PlayerModel();
PlayerView playerView = FindObjectOfType<PlayerView>();
playerPresenter = new PlayerPresenter(playerView, playerModel);
playerPresenter.SetPlayerData("John", 100);
}
}