de-vook / The-Essence-of-Object-Orientation

책 <객체지향의 사실과 오해> 그룹 스터디
18 stars 3 forks source link

[July & Namu] COMPOSITE 패턴 #27

Open jsim27 opened 2 years ago

jsim27 commented 2 years ago
  1. COMPOSITE 패턴은 대상이 부분인지 전체인지 상관없이 동일한 메시지로 대상과 상호작용하고 싶을 때 사용한다고 했는데, 여기서 "대상이 부분인지 전체인지 상관없이" 라는 부분이 잘 와닿지 않는데, 여러분 생각은 어떠실까요?

  2. 또, 이 COMPOSITE 패턴은 언제 사용하면 좋을지 궁금합니다!

Kim-EunsooSilver commented 2 years ago

저자는 윈도우 탐색기를 예를 들었는데요!

1번에 대한 질문! 저는 전체를 디렉터리로 이해했고 부분을 파일로 이해했습니다. 상호작용의 예로 경로 변경을 하자면은 부분의 상호 작용의 예로는 단순히 파일이동을 말하는 것이고 전체의 상호작용은 디렉터리 자체를 이동하는 것으로 받아들였습니다.

2번에 대한 질문! 윈도우 탐색기 이외의.. 예시로는... 🤔 회사 인력관리에서도 가능할거 같아요! 임원이라는그룹의 하위 객체로 코다, 오동나무, 서머 노예 관리자라는 그룹의 하위 객체로 수박 노예A팀 그룹의 하위 객체로 니코, 고사리 나무, 줄리, 호댕 노예B팀 그룹의 하위 객체로 나무, 예하, 허황, 릴라이, 지성

yeonheeha commented 2 years ago

ㅋㅋㅋㅋㅋㅋ 임원과 노예... 저도 이 부분이 잘 이해가 안됐어요. 다른 분들의 답변을 기다립니다..

gogosilver commented 2 years ago

노예A팀의 하위 객체인 고사리입니다😄

저는 p.134의 윈도우 탐색기를 사용하는 사용자의 관점에서 대상이 파일인지 폴더인지는 상관이 없다는 점에 주목하라 는 문장이 핵심이라고 이해했습니다.

니코의 예시를 확장해볼게요. 인력관리 시스템이 COMPOSITE 패턴을 가진 경우, 한 가지의 직급 변경 요청에

  1. 니코를 임원으로 승급시킨다.
  2. 노예 A팀을 모두 임원으로 승급시킨다.

두 가지 요청과 상호작용할 수 있게 된다고 생각합니다. 이에 미루어 보면, 해당 디자인 패턴을 차용하는 편이 그렇지 않은 편보다 유연하다고 표현할 수 있을 것 같습니다.

hwangjeha commented 2 years ago

1. 대상이 부분인지 전체인지 상관없이

Composite 패턴에 사용되는 모든 객체를 같은 취급하겠다 라고 이해했습니다. 윈도우 탐색기를 예시로 들었는데 모든 파일이나 디렉토리는 용량이라는 속성을 가지고 있고 윈도우 탐색기는 파일이나 디렉토리를 다른 객체로 보는게 아니고 용량 속성을 가진 동일한 객체로 취급할 수 있다고 이해했습니다.

설명이 부족한 관계로 공부할 때 봤던 링크 남기겠습니다😊 Composite 패턴 링크

2. COMPOSITE 패턴은 언제 사용하면 좋을지 궁금합니다!

COMPOSITE 패턴은 저희가 프로토콜(상속)을 사용하면서 이미 써보지 않았을까? 라는 생각이 듭니다. 프로토콜을 채택한 객체들은 프로토콜 타입으로 취급할 수 있으니까요.

yeahg-dev commented 2 years ago

저는 메시지를 보내는 대상이 부분이든지 전체이든지 상관없이 공용인터페이스를 제공함으로써 동일한 메시지를 수신해서 동일한 행동을 하도록 설계한 패턴이라고 이해를 했습니다.

다만 135p에 있는 도면에서 어떤 것이 대상이고 어떤 것이 부분인지에 대한 설명은 없어서 저도 잘 와닿지가 않네요🥲