파사드 패턴과 템플릿 메서드 패턴의 차이
126
4 asked
파사드 패턴은 다수의 서브시스템을 하나로 묶는 패턴으로 이해했습니다. 클라이언트의 클래스의 함수에서 서브시스템에 해당하는 개체들의 함수를 호출하여 구현하는 거 같은데요, 어떻게 보면 템플릿 메서드 패턴과 사실상 똑같은거 아닌가요? 두 패턴의 뚜렷한 차이가 있는데 제가 이해를 잘 못한건지 질문드립니다.
Answer 2
0
안녕하세요, 민트향칵테일 님.
템플릿 패턴 예제의 prepareRecipe, process 메소드를 살펴보셨나요? 다른 메소드들을 특정 순서 또는 로직으로 호출하는 메소드로, 파사드의 구조와는 다름을 보실 수 있을거예요.
꼭 그 부분이 아니더라도, 두 패턴의 전반 코드들을 보시면 구조적으로 꽤 차이가 있다는 점을 아실 수 있을 것입니다. 그냥 뭔가를 묶으니까 똑같다고 한다면 사실 다수의 패턴이 서로 같은 패턴이 됩니다.
이들에 주목하여 생각해보셔도 차이점이 잡히지 않으신다면 다시 댓글 달아주시면 보다 풀어 설명드리겠습니다.
0
안녕하세요, 인프런 AI 인턴입니다. 민트향칵테일님.
파사드 패턴과 템플릿 메서드 패턴은 각각 다른 목적과 구조를 가진 디자인 패턴입니다. 두 패턴의 차이점을 간단히 설명드리겠습니다.
파사드 패턴:
- 목적: 파사드 패턴은 클라이언트가 복잡한 서브시스템에 접근할 때 단순한 인터페이스를 제공하여 사용의 복잡성을 줄이는 것이 목적입니다.
- 구조: 파사드 클래스는 여러 서브시스템 클래스를 내부적으로 구성하며, 클라이언트는 이 파사드 클래스를 통해 서브시스템의 기능을 쉽게 사용할 수 있습니다.
- 사용 예시: 복잡한 라이브러리나 프레임워크의 사용을 단순화하기 위해 파사드 패턴이 자주 사용됩니다.
- 목적: 파사드 패턴은 클라이언트가 복잡한 서브시스템에 접근할 때 단순한 인터페이스를 제공하여 사용의 복잡성을 줄이는 것이 목적입니다.
템플릿 메서드 패턴:
- 목적: 템플릿 메서드 패턴은 알고리즘의 구조를 정의하고, 하위 클래스에서 특정 단계를 구현할 수 있도록 하는 것이 목적입니다.
- 구조: 상위 클래스는 알고리즘의 뼈대를 정의하고, 세부적인 구현은 하위 클래스에서 합니다. 즉, 상위 클래스에서 정의된 ‘템플릿 메서드’가 여러 개의 단계(추상 메서드)를 호출하고, 각 단계는 하위 클래스에 의해 구현됩니다.
- 사용 예시: 알고리즘의 뼈대는 동일하지만 특정 단계는 다르게 구현되어야 하는 경우에 사용됩니다.
- 목적: 템플릿 메서드 패턴은 알고리즘의 구조를 정의하고, 하위 클래스에서 특정 단계를 구현할 수 있도록 하는 것이 목적입니다.
따라서, 두 패턴은 그 목적과 적용되는 상황에서 뚜렷하게 구분됩니다. 파사드 패턴은 클라이언트의 복잡성 감소를 목적으로 서브시스템과 클라이언트 사이의 인터페이스를 단순화하는 것에 중점을 두고 있고, 템플릿 메서드 패턴은 알고리즘의 구조를 템플릿으로 정의하고 그 구현을 하위 클래스로 위임하는 역할을 합니다.
이와 관련된 더욱 상세한 내용을 알고 싶으시다면 아래 게시글을 참조하세요:
- 파사드 패턴과 이해하기
- 템플릿 메서드 패턴에 대한 이해
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
강사님.. 하단 URL에 있었던 코드들 다운 받거나 공유 부탁 드립니다..
0
7
1
섹션3. 11 회원객체 다이어그램
0
13
1
OCP, DIP과 @Qualifier 어노테이션에 대해서 질문합니다.
0
18
1
노션 접근권
0
18
1
@Version 어노테이션이 붙은 필드는 낙관적 락이든 비관적 락이든 업데이트가 됩니다.
0
19
1
형 이번에 낸 책이랑 강의 내용에 차이가 있어?
1
34
1
형 나 몰래 책내면 모를 줄 알고?
1
28
1
OrderServiceTest 상문주문 테스트 시 update 쿼리 문의
0
18
1
멀티스레드
1
19
2
N+1 관련해서 질문있습니다.
0
32
3
성능 오버헤드
1
24
2
다음 강의는 언제 올려주시는지요?
0
35
2
하단 파일이 열리지 않습니다
0
34
1
ssh-keygen -t rsa -P "" 등 ssh 암호화? 는 하둡에서 필수인가요?
0
27
2
강의 중복 확인 요청
0
25
1
강의 순서에 대한 궁금증
0
77
2
3-layer 에서의 파사드 패턴적용
0
85
2
강의 전부 수강했는데 퀴즈 활성화가 안되는 것 같습니다.
0
115
1
수정 요청
-18
212
5
안녕하세요.
0
130
1
질문이있습니다.
0
114
1
DIP 질문
0
133
2
빌더패턴 질문있습니다!
0
237
1
파사드 패턴에 대해 질문이 있습니다.
0
444
3

