[python] 모델-뷰-컨트롤러 패턴

모델-뷰-컨트롤러(MVC) 패턴은 소프트웨어 디자인 패턴 중 하나로, 사용자 인터페이스를 구성하는 컴포넌트들을 분리하여 유지보수와 확장성을 개선하는데 도움을 줍니다. 이 패턴은 다양한 소프트웨어 개발 분야에서 널리 사용되고 있습니다.

모델 (Model)

모델은 애플리케이션의 데이터와 비즈니스 로직을 담당하는 부분입니다. 예를 들어, 웹 애플리케이션의 경우 사용자 정보를 저장하는 데이터베이스와 관련된 코드를 모델에 작성합니다. 모델은 데이터를 읽기, 쓰기, 갱신, 삭제하는 기능을 제공하며, 데이터의 유효성 검사, 필터링, 변환 등을 처리할 수도 있습니다.

뷰 (View)

뷰는 사용자에게 데이터를 보여주는 부분입니다. 일반적으로 사용자 인터페이스와 관련되어 있으며, 데이터를 표시하기 위한 템플릿을 사용합니다. 뷰는 모델에게 데이터를 요청하고, 받은 데이터를 사용해 사용자 인터페이스를 업데이트하는 역할을 합니다. 뷰는 사용자 입력에 반응하여 컨트롤러에게 특정 작업을 요청하기도 합니다.

컨트롤러 (Controller)

컨트롤러는 모델과 뷰 사이에서 중재자 역할을 합니다. 사용자 입력을 받아 모델에게 전달하고, 모델의 변화를 감지하여 뷰를 업데이트합니다. 컨트롤러는 사용자의 명령을 해석하고, 필요한 작업을 수행하기 위해 모델과 뷰를 조정합니다. 예를 들어, 웹 애플리케이션에서 사용자가 폼에 입력한 데이터를 처리하는 작업을 컨트롤러가 담당합니다.

예제 코드

class UserModel:
    def __init__(self, name, email):
        self.name = name
        self.email = email

class UserController:
    def create_user(self, name, email):
        user = UserModel(name, email)
        # 데이터베이스에 사용자 추가하는 로직 작성
        pass

class UserView:
    def display_user(self, user):
        print(f"Name: {user.name}")
        print(f"Email: {user.email}")

# 사용 예시
controller = UserController()
name = "John Doe"
email = "johndoe@example.com"
controller.create_user(name, email)

view = UserView()
view.display_user(controller.user)

위 예제는 간단한 사용자 생성 애플리케이션을 MVC 패턴으로 구현한 것입니다. UserModel은 사용자 데이터를 담당하고, UserController는 사용자를 생성하는 로직을 수행하며, UserView는 생성된 사용자 정보를 화면에 출력합니다.

참고 자료