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

soojinkimss님의 프로필 이미지
soojinkimss

작성한 질문수

김영한의 실전 자바 - 기본편

문제와 풀이

문제2 PayService

작성

·

13

0

[질문 내용]

김영한 강사님께서 영상 18분 33초쯤에 PayService에 만든 findPay메소드에서 결제 수단을 넣으면 PayService의 코드가 바뀐다는 말이 잘 이해가 안됩니다. 자세하게 설명해주실 수 있을까요?

답변 2

0

안녕하세요. soojinkimss님, 공식 서포터즈 OMG입니다.

바로 뒤에서 설명하시는 내용과 연결해서 이해하시면 되는데요,

결제 수단을 넣는다는 것은 새로운 결제 수단을 추가하는 상황을 가정하여 말씀하신 것입니다.

naver, kakao 뿐만 아니라 새로운 new 결제수단을 추가하고 변하는 부분과 변하지 않는 부분에 대해 설명하신 것과 연결지어 생각해보시면 좋을 것 같아요 😀

감사합니다.

0

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

질문하신 PayService의 코드와 관련된 내용을 이해하기 위해서는, 작성된 메소드가 어떤 방식으로 확장 가능성을 염두에 두고 설계되는지에 대해 알아볼 필요가 있습니다. 아래 내용을 참고해 주세요:

PayService와 메서드의 역할

  • PayService는 결제 처리를 담당하는 클래스라고 할 수 있습니다. 이 클래스에서 findPay 메서드는 특정 결제 수단을 해당 메서드를 통해 결정하게 됩니다.
  • 코드 변경의 의미: 강사님께서 언급하신 ‘코드가 바뀐다’는 것은, 메서드 내부에서 결제 수단의 로직이 추가되거나 수정될 때 해당 메서드 내부 로직이 직접 변경된다는 것을 의미합니다.

관련 설명

  • 객체지향 설계에서 중요한 개념 중 하나는 확장 가능성입니다. 즉, 새로운 결제 수단이 추가되더라도 기존 구조를 유지하며 최소한의 수정으로만 새로운 기능을 반영할 수 있도록 하는 것입니다. 이는 열림-폐쇄 원칙(Open-Closed Principle)에 부합하는 예시가 됩니다.

유사한 질문과 답변
- 서비스 로직에 대해서 궁금한게 있습니다.: 이 답변에서는 PayService와 PayStore의 역할 분리에 대해 설명하고 있으며, 코드 변경의 최소화를 위한 방법론을 다루고 있습니다.

설명 보충

특정 결제 수단을 쉽게 추가하거나 변경할 수 있도록 저수준 모듈(=구체적인 결제 서비스)이 고수준 모듈(PayService)에 영향을 주지 않도록 설계해야 합니다. 이를 위해 객체지향에서 사용하는 디자인 패턴이나 추상화를 적용하게 되는데, 직접적인 코드 변경을 최소화하고 새로운 요구사항에 유연하게 대응할 수 있는 구조를 만드는 것이 목적입니다.

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

soojinkimss님의 프로필 이미지
soojinkimss

작성한 질문수

질문하기