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

요니님의 프로필 이미지
요니

작성한 질문수

Practical Testing: 실용적인 테스트 가이드

Q. private 메서드의 테스트는 어떻게 하나요?

ProductNumberFactory 클래스는 어떤 Layer 객체로 봐야 할까요?

작성

·

358

0

안녕하세요!
먼저 항상 좋은 강의 감사드립니다!

 

저도 작은 경험 이지만 개발을 하면서 서비스 단의  
로직을 분리 (강의에서 말씀 해주신 것 처럼 책임을 분리할 정도)

해야 하는 상황인 경우,
이렇게 하는게 맞는지는 모르겠으나,

Point1. ServiceUtil 클래스를 정의하여 컴포넌트로 주입받아 사용하거나 (실무에선 이렇게 사용)

Point2. 학습시에는 Facade 패턴을 이용하여
서로 다른 서비스들의 상위 퍼사드 객체를 만들어서 사용한 적이 있습니다.
(물론 퍼사드 패턴의 경우, 두 로직이 완전히 다른 맥락인 경우에 사용하는 것 같습니다.. 강의 예제와 같이 결합도가 높은 경우가 아니라..)

그런데, 강의에서는 Factory 객체를 만들어서
(마치 제가 ServiceUtil을 만들어서 사용하는 것 처럼 - 사실 이름만 다르지 같습니다)
사용하시는 모습을 보여주셨는데,
Q1. 강사님께서는 실무에서 서비스의 책임을 분리할 때 주로 이런식으로 Factory 클래스를 분리하여 사용하시는지 궁금하고,

 

Q2.그렇게 Factory 클래스로 책임을 분리했을 때,
이 Factory 클래스는 Controller / Service/ Repository 그 어느것도 아니게 되는데,

Spring WEB mvc 레이어 아키텍쳐 상으로 어떤 Layer의 어떤 입장의 객체로 인지하고 사용해야 하는지 여쭙고 싶습니다.

 

감사합니다.

답변 2

1

박우빈님의 프로필 이미지
박우빈
지식공유자

안녕하세요, khd1692 님! :)
답변 드리겠습니다.

 

Q1. 강사님께서는 실무에서 서비스의 책임을 분리할 때 주로 이런식으로 Factory 클래스를 분리하여 사용하시는지 궁금하고,

항상 Factory로 분리한다기 보다는, Factory라는 명명에 맞는 경우에 분리한다고 보는 것이 맞겠네요.
특정 객체(ProductNumber)를 일정한 규칙에 의거하여 생성해주는 책임을 가지고 있다고 판단하였기 때문에 Factory라는 이름을 주었습니다. :)

Q2.그렇게 Factory 클래스로 책임을 분리했을 때,
이 Factory 클래스는 Controller / Service/ Repository 그 어느것도 아니게 되는데,

Spring WEB mvc 레이어 아키텍쳐 상으로 어떤 Layer의 어떤 입장의 객체로 인지하고 사용해야 하는지 여쭙고 싶습니다.

기본적으로는 Service 레이어에 속한다고 보는 것이 맞을 것 같네요.
소거법으로 보아도, 외부 세계에서 요청을 받는 Controller, 데이터를 읽고 쓰기 위한 Repository는 아닌 것이 확실하고, 비즈니스 로직과 관련된 객체이니 Service 레이어라고 보는 것이 타당하기 때문입니다.

감사합니다. :)

0

안녕하세요 khd1692님, 인프런 AI 인턴이에요.

Q1. 저는 Factory 클래스를 분리하여 사용하는 방식은 실무에서도 자주 사용하는 방식입니다. Factory 클래스는 객체를 생성하는 역할을 담당하고, 이를 통해 객체 생성 로직을 캡슐화하고 중복을 줄일 수 있습니다.

Q2. Factory 클래스는 일반적으로 Spring WEB MVC 아키텍처에서는 Service 레이어에 속하는 객체로 간주될 수 있습니다. Service 레이어는 비즈니스 로직을 처리하는 역할을 수행하는 곳으로, Factory 클래스 역시 객체 생성과 관련된 로직을 처리하기 때문에 Service 레이어에 포함될 수 있습니다.

답변이 도움이 되었는지요? 추가로 궁금한 점이 있으시면 언제든지 물어보세요!

요니님의 프로필 이미지
요니

작성한 질문수

질문하기