책너두 (헤드 퍼스트 디자인 패턴) 42일차 (~564p)

요약

  • 복합 패턴
    • 모델-뷰-컨트롤러 알아보기
    • 모델-뷰-컨트롤러에 사용되는 패턴 알아보기
    • 모델-뷰-컨트롤러로 BPM 제어 도구 만들기

메모

모델-뷰-컨트롤러 알아보기

  • 음악 소프트웨어를 비유로 들어보자.
    • 새로운 노래를 재생한다.
      • 사용자가 인터페이스를 건드리면 그 행동이 컨트롤러에게 전달됨.
      • 컨트롤러에서 Player 모델에게 음악 재생을 요청함.
      • MP3파일을 관리하고 재생하는 데 필요한 모든 상태, 데이터, 애플리케이션 로직 등은 모델에 들어있음.
      • 모델에서 뷰에게 상태가 변경되었음을 알림.
    • 디스플레이가 갱신되는 것을 볼 수 있고, 음악이 재생되는 것을 들을 수 있음.
      • 뷰 디스플레이가 갱신됨.
  • 모델
    • 모든 데이터, 상태와 애플리케이션 로직이 들어 있음.
    • 뷰와 컨트롤러에서 모델의 상태를 조작하거나, 가져올 때 필요한 인터페이스를 제공함.
    • 모델이 자신의 상태 변화를 옵저버들에게 연락해 주긴 하지만, 기본적으로 모델은 뷰와 컨트롤러에 별 관심이 없음.
  • 컨트롤러
    • 사용자로부터 입력을 받으며, 입력받은 내용이 모델에게 어떤 의미가 있는지 파악함.
    • 모델을 표현하는 방법을 제공함.
    • 일반적으로 화면에 표시할 때 필요한 상태와 데이터는 모델에서 직접 가져옴.
  1. 사용자는 뷰에만 접촉할 수 있음.
    • 사용자가 뭔가를 하면 뷰는 무슨 일이 일어났는지 컨트롤러에게 알려줌.
    • 컨트롤러는 그 상황에 맞게 작업을 처리함.
  2. 컨트롤러가 모델에게 상태를 변경하라고 요청함.
    • 컨트롤러는 사용자의 행동을 받아서, 해석함
    • 그 해석된 내용을 바탕으로 모델을 어떤 식으로 조작해야 하는지 결정함.
  3. 컨트롤러가 뷰를 변경해 달라고 요청할 수도 있음.
    • 컨트롤러가 뷰로부터 어떤 행동을 받았을 때, 그 행동의 결과로 뷰에게 뭔가를 바꿔달라고 할 수 있음.
  4. 상태가 변경되면 모델이 뷰에게 그 사실을 알림.
    • 사용자가 한 행동이나 다른 내부적인ㅌ 변화 등으로 모델에서 뭔가가 바뀌면 모델은 뷰에게 상태가 변경되었다고 알림.
  5. 뷰가 모델에게 상태를 요청함.
    • 뷰는 화면에 표시할 상태를 모델로부터 직접 가져옴.

모델-뷰-컨트롤러에 사용되는 패턴 알아보기

  • 모델은 옵저버 패턴을 써서 상태가 바뀔 때마다 뷰와 컨트롤러에 연락함.
  • 뷰와 컨트롤러는 전략 패턴을 사용함.
    • 컨트롤러는 뷰의 행동에 해당하며, 다른 행동이 필요하면 그냥 다른 컨트롤러로 바뀌면 됨.
  • 뷰 안에는 내부적으로 컴포지트 패턴을 써서 윈도우, 버튼 같은 다양한 구성 요소를 관리함.

모델-뷰-컨트롤러로 BPM 제어 도구 만들기

  • 자바 DJ 뷰
    • 이 뷰는 드럼 비트를 만들고 BPM을 조절하는 용도로 쓰임.
    • DJ Control 에 대한 설정을 조작할 수 있는 여러 인터페이스를 제공함.
    • p562 참고
  • 모델과 뷰 사이의 컨트롤러
    • 컨트롤러는 뷰와 모델 사이에 있음.
    • 사용자가 JD Control 메뉴에서 ‘Start’를 선택하면 그 입력을 모델이 해야 하는 적절한 행동으로 바꾸는 작업을 처리함.
  • 그 뒤에 떡하니 버티고 있는 모델
    • 모델을 직접 볼 순 없겠지만, 적어도 들을 수는 있음.
    • 뒤에 숨어서 비트를 조절하고 스피커로 소리를 내보내는 작업을 처리함.

댓글

Designed by JB FACTORY