강의

멘토링

로드맵

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

박성춘님의 프로필 이미지
박성춘

작성한 질문수

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

1. 파사드(Facade) 패턴

3-layer 에서의 파사드 패턴적용

작성

·

12

0

안녕하세요. 강의 잘 들었습니다!

 

저는 SpringBoot를 주력으로 백엔드 개발을 하고있는데요. 주로 3-layer로 이루어진 계층형 아키텍처를 사용하고 있습니다.

 

이때, Controller에서 Service를 호출한 후 서비스 계층에서 비즈니스 로직을 처리한 후 결과만을 Controller에 리턴해주게 될텐데요!

 

이런 경우에 Controller에서 하나의 Service 클래스에 비즈니스 로직의 실행을 위임하는 것을 파사드 패턴이라고 볼 수 있을까요?

답변 2

1

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

안녕하세요! 강의 수강해주셔서 감사합니다!

그건 파사드 패턴이라고 부르기 어려워요. Controller가 Service를 호출하는 건 스프링 부트 3계층 아키텍처에서 가장 기본이 되는 역할 분담이에요. 파사드 패턴은 여러 개의 복잡한 하위 시스템들(예를 들면, 여러 Service 클래스나 모듈)을 묶어서 클라이언트(Controller)에게 단순화된 하나의 인터페이스를 제공할 때 사용하는 디자인 패턴입니다. 지금처럼 Controller가 Service 하나에 위임하는 것은 파사드의 목적(복잡성 숨기기 및 통합 인터페이스 제공)과는 조금 거리가 멉니다.

0

안녕하세요, 인프런 AI 인턴입니다. 박성춘님.

3-layer 아키텍처에서의 파사드 패턴 적용에 관해 질문해 주셨네요. 파사드 패턴은 시스템의 복잡성을 감소시키고 인터페이스를 단순화하는 역할을 수행합니다. 여기서 핵심은 클라이언트가 여러 서브시스템의 복잡성을 알 필요 없이, 단순한 인터페이스를 통해 시스템 기능을 쉽게 사용할 수 있게 하는 것입니다.

이 패턴은 보통 복잡한 서브시스템들이 많은 복잡한 로직을 필요로 할 때 유용합니다. 즉, 파사드 클래스가 복잡한 서브시스템의 여러 기능을 단순한 인터페이스로 통합하는 역할을 하는 것이죠.

Spring Boot의 3-layer 아키텍처에서는 보통 Controller는 Service를 호출하고, Service는 비즈니스 로직을 처리한 뒤 결과를 전달합니다. 여기서 단순히 Service 클래스를 한 번 호출하는 구조는 파사드 패턴과는 조금 다르게 이해될 수 있습니다. 파사드 패턴은 다수의 시스템이나 클래스 간의 복잡된 관계를 간단히 하고자 할 때 사용합니다. 따라서, 단순히 하나의 Service 클래스에 비즈니스 로직의 실행을 위임하는 것만으로는 파사드 패턴이라고 보긴 어렵습니다.

파사드 패턴을 적용하려면 여러 가지 복잡한 하위 시스템들 사이에서 중간 역할을 하는 것이 필요하기 때문입니다. 코드의 복잡성을 줄이기 위해 여러 서비스간의 인터페이스를 간소화하는 구조라면 고려해볼 만 합니다.

더 깊이 있는 이해를 원하신다면 아래 링크에서 더 많은 정보를 얻으실 수 있습니다:

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

박성춘님의 프로필 이미지
박성춘

작성한 질문수

질문하기