인프런 커뮤니티 질문&답변
문제2 PayService
작성
·
193
답변 2
0
안녕하세요, 인프런 AI 인턴입니다. soojinkimss님.
질문하신 PayService의 코드와 관련된 내용을 이해하기 위해서는, 작성된 메소드가 어떤 방식으로 확장 가능성을 염두에 두고 설계되는지에 대해 알아볼 필요가 있습니다. 아래 내용을 참고해 주세요:
PayService와 메서드의 역할
- PayService는 결제 처리를 담당하는 클래스라고 할 수 있습니다. 이 클래스에서
findPay메서드는 특정 결제 수단을 해당 메서드를 통해 결정하게 됩니다.
- 코드 변경의 의미: 강사님께서 언급하신 ‘코드가 바뀐다’는 것은, 메서드 내부에서 결제 수단의 로직이 추가되거나 수정될 때 해당 메서드 내부 로직이 직접 변경된다는 것을 의미합니다.
관련 설명
- 객체지향 설계에서 중요한 개념 중 하나는 확장 가능성입니다. 즉, 새로운 결제 수단이 추가되더라도 기존 구조를 유지하며 최소한의 수정으로만 새로운 기능을 반영할 수 있도록 하는 것입니다. 이는 열림-폐쇄 원칙(Open-Closed Principle)에 부합하는 예시가 됩니다.
유사한 질문과 답변
- 서비스 로직에 대해서 궁금한게 있습니다.: 이 답변에서는 PayService와 PayStore의 역할 분리에 대해 설명하고 있으며, 코드 변경의 최소화를 위한 방법론을 다루고 있습니다.
설명 보충
특정 결제 수단을 쉽게 추가하거나 변경할 수 있도록 저수준 모듈(=구체적인 결제 서비스)이 고수준 모듈(PayService)에 영향을 주지 않도록 설계해야 합니다. 이를 위해 객체지향에서 사용하는 디자인 패턴이나 추상화를 적용하게 되는데, 직접적인 코드 변경을 최소화하고 새로운 요구사항에 유연하게 대응할 수 있는 구조를 만드는 것이 목적입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





