본문 바로가기

Category/정보처리기사

Visitor 패턴과 Decorator 패턴 이해하기

728x90

Visitor 패턴과 Decorator 패턴은 둘 다 새로운 기능을 추가하는 방법이지만, 그 방식과 사용 목적이 다릅니다. 

1. Decorator 패턴: "객체에 기능을 덧붙이는 패턴"

Decorator는 말 그대로 장식을 덧붙이는 것처럼, 기존 객체에 새로운 기능을 덧붙이는 패턴입니다.

커피를 예로 들어봅시다.

  • 기본 커피가 있죠. 커피는 그냥 커피일 뿐입니다.
  • 하지만, 여기에 우유를 넣고 싶다면? 우유를 추가해서 커피에 새로운 기능을 붙입니다.
  • 더 나아가서 설탕을 넣고 싶다면? 또 설탕을 추가해서 커피를 감쌉니다.

이렇게 기본 객체(커피)추가 기능(우유, 설탕)을 덧붙여서 객체의 기능을 확장하는 방식입니다.

  • Decorator 패턴은 객체를 변경하지 않고 필요할 때마다 기능을 추가할 수 있는 게 장점입니다.

2. Visitor 패턴: "여러 객체를 방문해서 작업하는 패턴"

Visitor는 여러 객체를 돌아다니면서 각각의 객체에서 특정 작업을 수행하는 패턴입니다.

박물관이 있다고 생각해봅시다.

  • 박물관에는 그림, 조각상, 화석 등 다양한 전시품들이 있어요.
  • 이때, 큐레이터가 박물관의 전시품을 하나씩 방문하면서 설명을 추가합니다.
  • 큐레이터는 그림, 조각상, 화석에 각각 다른 설명을 덧붙일 수 있죠.

이처럼 Visitor 패턴은 여러 다른 종류의 객체들을 방문하면서, 그 객체마다 다른 작업(설명 추가)을 수행하는 패턴입니다.

쉽게 요약하면:

  • Decorator 패턴은 "한 객체에 여러 기능덧붙인다."
    • 예: 기본 커피에 우유, 설탕 등 다양한 옵션을 붙이는 것.
  • Visitor 패턴은 "여러 객체를 돌아다니며 각각의 작업을 수행한다."
    • 예: 박물관 큐레이터가 각 전시품(그림, 조각상)에 설명을 붙이는 것.

차이를 기억하는 쉬운 방법:

  • Decorator하나의 객체에 여러 기능을 추가하는 데 사용.
  • Visitor여러 객체를 방문해서 작업을 수행하는 데 사용.
728x90