디자인 패턴은 23개 이름을 순서대로 외우는 과목이 아닙니다. 무엇을 만들지, 어떻게 연결할지, 객체가 어떻게 협력할지를 먼저 보면 문제의 답이 좁혀집니다. 시험 범위와 최신 출제기준은 시행기관 원문근거 원문 을 기준으로 확인합니다.
실행 중에 알고리즘을 교체하고, 사용하는 쪽의 코드는 바꾸지 않으려면 어떤 패턴이 먼저 떠올라야 할까요?
정답 확인하기
알고리즘을 별도 객체로 분리하고 공통 인터페이스로 교체할 수 있게 만드는 목적에 가장 직접적으로 대응합니다.
생성·구조·행위는 해결하려는 문제가 다릅니다
분류는 정답이 아니라 첫 번째 필터입니다. 예를 들어 Factory Method와 Abstract Factory를 구별하려면 “하위 클래스가 제품 생성을 맡는가”와 “관련된 제품군을 함께 만드는가”를 다시 확인해야 합니다.
Factory Method와 Abstract Factory를 제품 수로만 고르지 않기
Windows와 macOS 각각에 맞는 버튼·체크박스 제품군을 만들고, 화면 코드는 구체 클래스를 몰라도 일관된 제품군을 사용해야 한다. 어떤 패턴이 가장 직접적인가?
객체를 생성하므로 Factory Method이다.
관련된 버튼·체크박스 제품군을 운영체제별 팩토리로 묶어 제공해야 하므로 Abstract Factory가 가장 직접적이다. Factory Method는 한 제품의 생성 단계를 하위 클래스에 맡기는 상황과 구별한다.
- 01제품군 찾기
서로 함께 사용돼야 하는 관련 제품이 둘 이상인지 확인합니다.
- 02일관성 요구 찾기
Windows 버튼과 macOS 체크박스가 섞이면 안 된다는 제약을 표시합니다.
- 03생성 책임 비교
제품군 팩토리와 단일 제품 생성 메서드 중 문제의 책임 범위에 맞는 쪽을 고릅니다.
판별 포인트‘생성한다’는 공통점보다 한 제품인지 관련 제품군인지가 두 패턴을 가릅니다.
패턴명보다 문제 속 동사를 찾습니다
- 교체한다알고리즘을 바꿔 끼우면 Strategy를 먼저 검토합니다.
- 통지한다한 객체의 변경을 여러 객체에 알리면 Observer를 떠올립니다.
- 기능을 덧붙인다기존 객체에 책임을 동적으로 추가하면 Decorator를 검토합니다.
- 접근을 대신한다실제 객체 앞에서 접근·로딩·권한을 제어하면 Proxy를 검토합니다.
같은 인터페이스나 상속 구조가 등장한다는 사실만으로 패턴을 확정하면 안 됩니다. 문제에서 바꾸려는 대상과 그 이유가 무엇인지가 결정적인 단서입니다.
사례의 목적을 보고 답을 고릅니다
문제: 결제 수단별 계산 방법을 실행 중에 바꾸고 싶다. 결제 수단을 바꿔도 주문 처리 코드는 수정하지 않도록 설계할 때 가장 알맞은 패턴을 쓰시오.
- 정답Strategy 패턴
- 이유결제 계산 알고리즘을 별도 객체로 분리하고, 주문 처리 코드는 선택된 알고리즘에 위임할 수 있다.
- 구별State는 객체의 내부 상태 변화에 따라 행동이 달라지는 경우에 더 가깝다.
정의 카드와 비교 카드를 함께 풉니다
처음에는 세 분류별로 대표 패턴을 묶어 보고, 다음 회독에서는 Strategy·State, Adapter·Facade, Decorator·Proxy처럼 혼동되는 쌍을 비교합니다. 이름을 보지 않고 단서만 보고 답을 고르는 연습이 필요합니다.
정보처리기사 단답형 암기법에서 대표답을 짧게 꺼내는 법을 확인하고, 답안 작성 글로 이어서 이유까지 쓰는 연습을 해보세요.