본문 바로가기
C#/Winforms

WinForms 프로젝트에서 MVP 패턴 활용하기

by jhwannabe 2025. 1. 16.

안녕하세요! 오늘은 WinForms 애플리케이션 개발 시 MVP(Model-View-Presenter) 패턴을 활용하는 방법에 대해 알아볼게요. 이 패턴은 코드의 가독성을 높이고 유지보수를 용이하게 만들어주는 훌륭한 구조적 방법이에요. 😊


1. MVP 패턴이란?

MVP는 UI와 비즈니스 로직을 분리하여 개발하는 디자인 패턴입니다. 주요 구성 요소는 다음과 같습니다:

  • Model: 데이터와 비즈니스 로직을 관리합니다.
  • View: 사용자 인터페이스(UI)를 담당합니다.
  • Presenter: View와 Model 간의 상호작용을 중재합니다.

MVP를 사용하면 다음과 같은 장점을 얻을 수 있어요:

  • UI와 로직 분리로 유지보수성 증가
  • 테스트 용이성 향상
  • 코드 재사용성 증가

2. WinForms에서 MVP 패턴 구현하기

(1) Model 정의

Model은 데이터와 비즈니스 로직을 포함합니다.

public class UserModel
{
    public string Name { get; set; }
    public int Age { get; set; }
}

 

(2) View 인터페이스 정의

View는 Presenter와 통신하기 위한 인터페이스를 정의합니다.

public interface IUserView
{
    string UserName { get; set; }
    int UserAge { get; set; }
    event EventHandler SaveClicked;
}

 

(3) Presenter 구현

Presenter는 View와 Model 간의 중재 역할을 합니다.

public class UserPresenter
{
    private readonly IUserView _view;
    private readonly UserModel _model;

    public UserPresenter(IUserView view)
    {
        _view = view;
        _model = new UserModel();

        _view.SaveClicked += OnSaveClicked;
    }

    private void OnSaveClicked(object sender, EventArgs e)
    {
        _model.Name = _view.UserName;
        _model.Age = _view.UserAge;
        // Model 데이터를 저장하거나 처리
    }
}

 

(4) View 구현

View는 사용자 인터페이스를 포함합니다.

public partial class UserForm : Form, IUserView
{
    public string UserName
    {
        get => txtName.Text;
        set => txtName.Text = value;
    }

    public int UserAge
    {
        get => int.Parse(txtAge.Text);
        set => txtAge.Text = value.ToString();
    }

    public event EventHandler SaveClicked;

    public UserForm()
    {
        InitializeComponent();
        btnSave.Click += (s, e) => SaveClicked?.Invoke(this, EventArgs.Empty);
    }
}

 

(5) 프로그램 실행

Application.Run(new UserForm());

3. MVP 패턴의 장점

  • 유지보수성: UI와 로직이 분리되어 코드 변경 시 영향이 최소화됩니다.
  • 테스트 용이성: Presenter를 단위 테스트할 수 있습니다.
  • 확장성: 프로젝트의 요구사항 변화에 유연하게 대응할 수 있습니다.

4. MVP와 MVVM의 비교

WinForms에서는 MVP 패턴이 적합하지만, WPF에서는 MVVM 패턴이 더 자주 사용됩니다. 두 패턴은 역할은 비슷하지만 구현 방법에 차이가 있어요:

  • MVP: View는 Presenter를 호출.
  • MVVM: View는 Binding으로 ViewModel과 연결.

5. 마무리

MVP 패턴은 WinForms 프로젝트에서 코드의 유지보수성과 테스트 용이성을 높이는 데 매우 유용합니다. 간단한 프로젝트에서부터 대규모 애플리케이션까지 다양한 규모의 프로젝트에 적용할 수 있어요. 오늘 소개한 내용을 참고해서 프로젝트에 도입해 보세요! 😊

728x90
반응형