강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của ssh2457246076
ssh2457246076

câu hỏi đã được viết

Thiết kế mẫu hướng đối tượng dễ hiểu của Yalco

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

Viết

·

102

0

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

java객체지향디자인-패턴

Câu trả lời 2

0

yalco님의 프로필 이미지
yalco
Người chia sẻ kiến thức

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

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

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

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

0

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

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

  1. 파사드 패턴:

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

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

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

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

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

Hình ảnh hồ sơ của ssh2457246076
ssh2457246076

câu hỏi đã được viết

Đặt câu hỏi