강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

민트향칵테일님의 프로필 이미지
민트향칵테일

작성한 질문수

얄코의 떠먹여주는 객체지향 디자인 패턴

파사드 패턴과 템플릿 메서드 패턴의 차이

작성

·

9

0

파사드 패턴은 다수의 서브시스템을 하나로 묶는 패턴으로 이해했습니다. 클라이언트의 클래스의 함수에서 서브시스템에 해당하는 개체들의 함수를 호출하여 구현하는 거 같은데요, 어떻게 보면 템플릿 메서드 패턴과 사실상 똑같은거 아닌가요? 두 패턴의 뚜렷한 차이가 있는데 제가 이해를 잘 못한건지 질문드립니다.

답변 2

0

얄팍한 코딩사전님의 프로필 이미지
얄팍한 코딩사전
지식공유자

안녕하세요, 민트향칵테일 님.

템플릿 패턴 예제의 prepareRecipe, process 메소드를 살펴보셨나요? 다른 메소드들을 특정 순서 또는 로직으로 호출하는 메소드로, 파사드의 구조와는 다름을 보실 수 있을거예요.

꼭 그 부분이 아니더라도, 두 패턴의 전반 코드들을 보시면 구조적으로 꽤 차이가 있다는 점을 아실 수 있을 것입니다. 그냥 뭔가를 묶으니까 똑같다고 한다면 사실 다수의 패턴이 서로 같은 패턴이 됩니다.

이들에 주목하여 생각해보셔도 차이점이 잡히지 않으신다면 다시 댓글 달아주시면 보다 풀어 설명드리겠습니다.

0

안녕하세요, 인프런 AI 인턴입니다. 민트향칵테일님.

파사드 패턴과 템플릿 메서드 패턴은 각각 다른 목적과 구조를 가진 디자인 패턴입니다. 두 패턴의 차이점을 간단히 설명드리겠습니다.

  1. 파사드 패턴:

    • 목적: 파사드 패턴은 클라이언트가 복잡한 서브시스템에 접근할 때 단순한 인터페이스를 제공하여 사용의 복잡성을 줄이는 것이 목적입니다.
    • 구조: 파사드 클래스는 여러 서브시스템 클래스를 내부적으로 구성하며, 클라이언트는 이 파사드 클래스를 통해 서브시스템의 기능을 쉽게 사용할 수 있습니다.
    • 사용 예시: 복잡한 라이브러리나 프레임워크의 사용을 단순화하기 위해 파사드 패턴이 자주 사용됩니다.
  2. 템플릿 메서드 패턴:

    • 목적: 템플릿 메서드 패턴은 알고리즘의 구조를 정의하고, 하위 클래스에서 특정 단계를 구현할 수 있도록 하는 것이 목적입니다.
    • 구조: 상위 클래스는 알고리즘의 뼈대를 정의하고, 세부적인 구현은 하위 클래스에서 합니다. 즉, 상위 클래스에서 정의된 ‘템플릿 메서드’가 여러 개의 단계(추상 메서드)를 호출하고, 각 단계는 하위 클래스에 의해 구현됩니다.
    • 사용 예시: 알고리즘의 뼈대는 동일하지만 특정 단계는 다르게 구현되어야 하는 경우에 사용됩니다.

따라서, 두 패턴은 그 목적과 적용되는 상황에서 뚜렷하게 구분됩니다. 파사드 패턴은 클라이언트의 복잡성 감소를 목적으로 서브시스템과 클라이언트 사이의 인터페이스를 단순화하는 것에 중점을 두고 있고, 템플릿 메서드 패턴은 알고리즘의 구조를 템플릿으로 정의하고 그 구현을 하위 클래스로 위임하는 역할을 합니다.

이와 관련된 더욱 상세한 내용을 알고 싶으시다면 아래 게시글을 참조하세요:
- 파사드 패턴과 이해하기
- 템플릿 메서드 패턴에 대한 이해

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

민트향칵테일님의 프로필 이미지
민트향칵테일

작성한 질문수

질문하기