디자인 패턴 정리 (GOF - Composite Pattern)

Youngmin Choi·2021년 12월 2일
0

Design-Pattern

목록 보기
2/9
post-thumbnail

4. Composite Pattern (컴포지트 패턴)
- 용도 :
틀과 내용물을 같은 것으로 취급하고 싶을 때(Directory 내부에는 directory와 파일이 있지만, 둘 모두 디렉토리 내부에 있는 Element로 표현하고 싶을 때!)


요약 :
상속은 자식이 원하지 않는 기능도 물려 받을 수 있기 때문에 +- 할 것들이 너무 많다! 또 클래스마다 커플링이 심하다! 그런데 컴포넌트필요할 때마다 원하는 기능을 갖다 붙여 포함시키는 방식으로 즉 부품 같은 역할!


- 사용 방법 :
Composite클래스Component를 포함하도록 함!

  • 컴포넌트란:)
    로직을 기능별로 Component화 하는 것!
    기능들을 나누어 각각 독립적인 클래스로 분리!
    (OOP 5대 원칙 '1.단일책임원칙(SRP)' / 모든 클래스는 하나의 책임을 가지며 그 책임은 완전히 캡슐화 되어야 함!!)


    ex1)
    구조 :
    컴포넌트 패턴을 사용하지 않았을 때..
    한 코드내에서
    1. 오브젝트 90도 회전
    2. 오브젝트 이동
    3. 0.5초 yield wait
    위와 같은 세가지 일련의 과정을 가진 코루틴 함수가 있다. 한 코드 내에서 회전도 하고 이동도 하지만, 만약에 회전을 다하고나면 0.3초 기다리고 이동은 0.5초 기다리도록 수정하고 싶다.. 그런데 수정 작업이 상당하다.. 귀찮다.. 너무 귀찮다..

    ex2)
    구조 :
    컴포넌트 패턴을 사용했을 때
    기능 별로 나누어 클래스로 묶어 독립적으로 분리해놓고 필요할 때 가져다 쓴다!
    1. 이동과 회전 기능을 별개의 클래스로 분리!
    - Move.cs : 이동에 관한 것만 묶어 작성. 0.3초 기다리는 코루틴 함수.
    - Rotate.cs : 회전에 관한 것만 묶어 작성. 0.5초 기다리는 코루틴 함수.
    1. 유지보수시 한 컴포넌트에 대한 부분만 수정하면 되서 편해졌다! 즉, 두 컴포넌트(c# 스크립트) 사이의 커플링이 없어졌다!

profile
Always, Continually, In all circumstance

0개의 댓글