디자인 패턴은 소프트웨어 설계 시 자주 발생하는 문제를 해결하기 위해 정립된 경험의 집약체로, 재사용 가능한 해결책을 기술한다. GoF(Gang of Four)는 디자인 패턴의 고전적인 분류 체계를 제시한 네 명의 저자로, 패턴을 생성, 구조, 행위 세 범주로 나누었다. 생성 패턴은 객체 생성 메커니즘을, 구조 패턴은 클래스나 객체의 조합을, 행위 패턴은 객체 간의 통신과 책임 분배를 다룬다.
범주별 대표 패턴을 구분하는 것이 핵심이다. 행위 패턴에는 커맨드(Command), 옵저버(Observer), 상태(State), Visitor(방문자) 등이 속한다. Visitor는 데이터 구조와 연산을 분리하여 새로운 연산을 추가할 수 있게 하는 행위 패턴이다. 생성 패턴에는 프로토타입(Prototype), 빌더(Builder) 등이 속하는데, 프로토타입은 기존 객체를 복사하여 새로운 객체를 생성하는 패턴이고 빌더도 생성 패턴에 분류된다. 브리지(Bridge)는 구조 패턴이다.
디자인 패턴을 구성하는 요소에는 구체적인 상황인 문제 및 배경, 실제 적용 사례인 사례, 구현을 돕는 샘플 코드 등이 포함된다. 패턴은 특정 사람이나 팀에 국한되지 않고 누구나 이해하고 적용할 수 있는 보편적인 지침이어야 하므로, 개발자 이름 같은 개인적 요소는 구성 요소가 아니다.
예제
시험에서는 "GoF의 디자인 패턴에서 행위 패턴에 속하는 것은?"처럼 보기의 패턴을 범주로 분류하는 문제가 반복된다. Visitor가 정답이 되고 Builder·Prototype(생성), Bridge(구조)가 오답 보기로 섞인다. 거꾸로 "행위 패턴에 속하지 않는 것은?"에서는 프로토타입이 정답이 된다. 패턴 구성 요소 문제에서는 개발자 이름이 거리가 먼 보기로 나온다.
대표 기출 3문항
GoF(Gang of Four)의 디자인 패턴에서 행위 패턴에 속하는 것은?
Builder
Visitor
Prototype
Bridge
정답과 해설 보기
정답 ② · 이 문제는 GoF 디자인 패턴의 세 가지 분류 중 객체 간의 상호작용과 책임 분배를 다루는 행위 패턴을 묻고 있다. 방문자 패턴(Visitor)은 데이터 구조와 연산을 분리하여 기존 클래스를 수정하지 않고도 새로운 연산을 추가할 수 있게 돕는 대표적인 행위 패턴이다.
GoF 디자인 패턴 중 행위 패턴은 객체의 책임 분배와 상호작용을 다루며 Visitor가 해당된다.
디자인 패턴 중에서 행위적 패턴에 속하지 않는 것은?
커맨드 (Command) 패턴
옵저버 (Observer) 패턴
프로토타입 (Prototype) 패턴
상태 (State) 패턴
정답과 해설 보기
정답 ③ · 디자인 패턴 중 행위 패턴에 속하지 않는 것을 고르는 문제이다. 디자인 패턴은 생성, 구조, 행위 패턴으로 분류되는데, 프로토타입 패턴은 기존 객체를 복제하여 새 객체를 생성하는 생성 패턴에 속한다.
디자인 패턴은 생성, 구조, 행위 패턴으로 분류되며, 프로토타입은 객체 생성을 담당하는 생성 패턴이므로 행위 패턴에 속하지 않습니다.
객체지향 소프트웨어 설계시 디자인 패턴을 구성하는 요소로서 가장 거리가 먼 것은?
개발자이름
문제 및 배경
사례
샘플코드
정답과 해설 보기
정답 ① · 디자인 패턴을 구성하는 요소가 아닌 것을 찾는 문제이다. 디자인 패턴 문서는 패턴 이름, 문제 및 배경, 해결 방법, 사례, 샘플 코드, 결과 등으로 구성되어 특정 문맥에서 반복적으로 발생하는 문제에 대한 재사용 가능한 해결책을 기술한다.
디자인 패턴은 재사용 가능한 설계 솔루션을 기술하므로 개발자 이름과 같은 개인적 요소는 포함되지 않는다.