런타임노트

[헤드퍼스트 디자인패턴] 29일차. 387-398pg 본문

책책책 책을 읽읍시다‼ ver.개발/[ 헤드퍼스트 디자인패턴 ]

[헤드퍼스트 디자인패턴] 29일차. 387-398pg

D269 2023. 6. 2. 11:27
728x90

29일차

헤드퍼스트 디자인패턴 [5주차_금요일]

387-398pg

요약

CHAPTER 09. 컬렉션 잘 관리하기 (feat. 반복자 패턴과 컴포지트 패턴)

  • 객체 저장방식을 보여 주지 않으면서도 클라이언트가 객체에 일일이 접근할 수 있게 해 주는 방법

 

[ 반복자와 컬렉션 ]

  • Collection 인터페이스에서 Iterable 인터페이스를 구현한다.
  • Collection 인터페이스를 구현하는 클래스라면 언제든 iterator() 메소드로 필요한 반복자를 받아올 수 있다.
  • HashMap()은 반복자를 간접적으로 지원하는 클래스 : HashMap에는 2개의 객체 모듬이 들어있다. 하나는 keys이고 다른 하나는 values, 그러나 값들을 대상으로 반복작업을 하고 싶다면 먼저 HashMap에서 values를 가져온 다음 그 반복자를 받아와야 한다.

 

[ 컴포지트 패턴(Composite Pattern) ]

  • 객체를 트리구조로 구성해서 부분-전체 계층구조(part-whole hierarchy)를 구현한다.
    • 부분-전체 계층구조(part-whole hierarchy) 란?
      • 부분(메뉴 및 메뉴항목)들이 계층을 이루고 있지만 모든 부분을 묶어서 전체로 다룰 수 있는 구조
  • 컴포지트 패턴을 사용하면 클라이언트에서 기별 객체와 복합객체를 똑같은 방법으로 다룰 수 있다.
  • 메뉴, 서브메뉴, 서브서브메뉴로 구성된 트리구조가 있다고 하면 각각이 모두 복합 객체가 될 수있다.
  • 객체의 구성과 개별 객체를 노드로 가지는 트리 형태의 객체 구조를 만들 수 있다.
  • 복합 구조(composite structure)를 사용하면 복합 객체와 개별 객체를 대상으로 똑같은 작업을 적용할 수 있다. → 복합 객체와 개별 객체를 구분할 필요가 거의 없어짐.

 

[ 트리구조 ]

  • 노드(node) : 자식 원소가 있는 원소
  • 잎(leaf) : 자식이 없는 원소

 

발췌

💡 컴포지트 패턴 : 객체를 트리구조로 구성해서 부분-전체 계층구조(part-whole hierarchy)를 구현한다.

 

 

 

 

 

728x90
반응형