해당 포스팅은 한빛 미디어 헤드퍼스트 디자인 패턴(에릭 프리먼, 엘리자베스 롭슨 저)를 통해 공부한 내용을 정리한 블로그입니다.

아직 많이 부족하고 배울게 너무나도 많습니다. 틀린내용이 있으면 언제나 가감없이 말씀해주시면 감사하겠습니다😁
좋은 프로그래머는 자기 두뇌를 사용한다. 그러나 좋은 가이드라인은 모든 케이스를 고려해야만 하는 노력을 줄여준다.
(Francis Glassborow, 개발자)

Combined Pattern


여러 패턴을 함께 사용하여 더욱 강력한 객체지향 디자인 패턴

  • 패턴 몇개를 결합한다고 무조건 복합 패턴이 되는 것이 아님.
  • 여러가지 문제의 일반적인 해결법을 제시해야함.
    • ex) MVC패턴
    • 여러 패턴에 대해 적용 가능한 시나리오 작성.
      • 같은 역할을 하는 클래스에 대해 기능 통일 → 상속
      • 다른 클래스에서 같은 인터페이스를 사용하도록 연결하는 역할 → 어댑터 패턴
      • 다양한 클래스를 한데 묶어 소리를 낸 횟수 세려면 → 데코레이터 패턴
      • 데코레이터에서 객체를 제대로 포장하지 않으면 원하는 행동 추가 불가능. 데코레이터로 감싸는 부분을 하나로 빼내서 캡슐화 → 팩토리 패턴
      • 다양한 클래스를 한데 관리 ⇒ 반복자 패턴, 구성패턴
      • 하나의 클래스에 대해 관리 ⇒ 옵저버 패턴

Model - View - Controller 알아보기

View

  • Model을 표현하는 방법을 제공
  • 화면에 표시할 때 상태와 데이터는 Model에서 가져오기

Controller

  • Controller에서 Model을 조작
  • 사용자가 인터페이스를 건드리면 그 행동이 Controller에게 전달
  • 사용자에게 입력을 받으며 입력받은 내용이 Model에게 의미 전달.

Model

  • View에게 상태 변화 통기
  • 필요한 상태, 데이터, 애플리케이션 로직은 Model에 들어있음.

동작

  • 사용자는 View에만 접촉 가능
  • Controller가 Model에게 상태를 변경하라고 요청
    • 사용자의 행동을 받아서 해석
    • 의미해석, 모델 조작 결정.
  • Controller가 View를 변경해달라고 요청
    • 결과로 View에게 바꿔달라고 요청할 수 있음.
  • 상태가 변경되면 Model이 View에게 사실 전달
    • 사용자가 한 행동으로 내부적인 변화 등으로 모델이 변경되면 뷰에게 상태가 변경되었다고 요청
  • View가 Model에게 상태 요청

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

  • 컴포지트 패턴
    • 디스플레이는 여러 단계로 겹쳐있는 윈도우, 패널, 텍스트로 구성
    • 각 디스클레이는 복합 객체나 잎버튼이 될 수 있음.
    • 최상위 뷰 구성요소에게만 화면을 갱신
  • 전략 패턴
  • 옵저버 패턴
    • 상태가 변경되었을 때 그 모델과 연관된 객체들에게 연락.
    • 모델을 뷰와 컨트롤러로부터 분리

 

+ Recent posts