요약
- 복합 패턴
- 모델-뷰-컨트롤러 알아보기
- 모델-뷰-컨트롤러에 사용되는 패턴 알아보기
- 모델-뷰-컨트롤러로 BPM 제어 도구 만들기
메모
모델-뷰-컨트롤러 알아보기
- 음악 소프트웨어를 비유로 들어보자.
- 새로운 노래를 재생한다.
- 사용자가 인터페이스를 건드리면 그 행동이 컨트롤러에게 전달됨.
- 컨트롤러에서 Player 모델에게 음악 재생을 요청함.
- MP3파일을 관리하고 재생하는 데 필요한 모든 상태, 데이터, 애플리케이션 로직 등은 모델에 들어있음.
- 모델에서 뷰에게 상태가 변경되었음을 알림.
- 디스플레이가 갱신되는 것을 볼 수 있고, 음악이 재생되는 것을 들을 수 있음.
- 모델
- 모든 데이터, 상태와 애플리케이션 로직이 들어 있음.
- 뷰와 컨트롤러에서 모델의 상태를 조작하거나, 가져올 때 필요한 인터페이스를 제공함.
- 모델이 자신의 상태 변화를 옵저버들에게 연락해 주긴 하지만, 기본적으로 모델은 뷰와 컨트롤러에 별 관심이 없음.
- 컨트롤러
- 사용자로부터 입력을 받으며, 입력받은 내용이 모델에게 어떤 의미가 있는지 파악함.
- 뷰
- 모델을 표현하는 방법을 제공함.
- 일반적으로 화면에 표시할 때 필요한 상태와 데이터는 모델에서 직접 가져옴.
- 사용자는 뷰에만 접촉할 수 있음.
- 사용자가 뭔가를 하면 뷰는 무슨 일이 일어났는지 컨트롤러에게 알려줌.
- 컨트롤러는 그 상황에 맞게 작업을 처리함.
- 컨트롤러가 모델에게 상태를 변경하라고 요청함.
- 컨트롤러는 사용자의 행동을 받아서, 해석함
- 그 해석된 내용을 바탕으로 모델을 어떤 식으로 조작해야 하는지 결정함.
- 컨트롤러가 뷰를 변경해 달라고 요청할 수도 있음.
- 컨트롤러가 뷰로부터 어떤 행동을 받았을 때, 그 행동의 결과로 뷰에게 뭔가를 바꿔달라고 할 수 있음.
- 상태가 변경되면 모델이 뷰에게 그 사실을 알림.
- 사용자가 한 행동이나 다른 내부적인ㅌ 변화 등으로 모델에서 뭔가가 바뀌면 모델은 뷰에게 상태가 변경되었다고 알림.
- 뷰가 모델에게 상태를 요청함.
- 뷰는 화면에 표시할 상태를 모델로부터 직접 가져옴.
모델-뷰-컨트롤러에 사용되는 패턴 알아보기
- 모델은 옵저버 패턴을 써서 상태가 바뀔 때마다 뷰와 컨트롤러에 연락함.
- 뷰와 컨트롤러는 전략 패턴을 사용함.
- 컨트롤러는 뷰의 행동에 해당하며, 다른 행동이 필요하면 그냥 다른 컨트롤러로 바뀌면 됨.
- 뷰 안에는 내부적으로 컴포지트 패턴을 써서 윈도우, 버튼 같은 다양한 구성 요소를 관리함.
모델-뷰-컨트롤러로 BPM 제어 도구 만들기
- 자바 DJ 뷰
- 이 뷰는 드럼 비트를 만들고 BPM을 조절하는 용도로 쓰임.
- DJ Control 에 대한 설정을 조작할 수 있는 여러 인터페이스를 제공함.
- p562 참고
- 모델과 뷰 사이의 컨트롤러
- 컨트롤러는 뷰와 모델 사이에 있음.
- 사용자가 JD Control 메뉴에서 ‘Start’를 선택하면 그 입력을 모델이 해야 하는 적절한 행동으로 바꾸는 작업을 처리함.
- 그 뒤에 떡하니 버티고 있는 모델
- 모델을 직접 볼 순 없겠지만, 적어도 들을 수는 있음.
- 뒤에 숨어서 비트를 조절하고 스피커로 소리를 내보내는 작업을 처리함.
댓글