작성
·
353
·
수정됨
1
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)
[질문 내용]
1. 두번째 문제인 결제 문제에서 PayService 클래스를 최대한 변경하지 않기 위해서 결제 수단을 찾는 로직을 메서드로 서비스 클래스에 작성했다가 따로 PayStore 클래스로 빼서 생성했는데, 원래 서비스 클래스(로직)에는 변경이 잘 이루어지지 않게 코드를 작성해야 하나요?
PayStore 클래스를 추상 클래스로 작성했는데, PayStore 클래스에는 findPay 메서드만 있어서 abstract를 넣어야 할까? 생각을 했는데, PayStore 클래스라는 역할은 결제 수단을 찾는 역할만 수행하기 위해 클래스 변수를 생성하지 않게 하기 위함이고(PayStore 객체를 생성하지 못하게해서 초기화를 못하게 하기 위함) 다른 개발자들이 저 PayStore 클래스를 보고 "아 저런 용도로 사용해야겠구나" 라는 것을 알게하기 위함으로 abstract를 넣어준걸까요? 그리고 findPay 메서드를 static 메서드로 선언해준 이유가 잘 이해가 안됩니다..
답변 1
4
안녕하세요. kjkj268님
이 부분에 대해서는 정답이 없습니다. 다만 여기서는 결제를 수행하는 부분과 결제를 자체를 생성하고 찾는 부분을 명확히 분리한 것으로 이해하시면 됩니다. 이렇게 되면 결제를 수행하는 부분을 변경할 때는 PayServie를 수정하면 되고, 결제를 찾는 부분을 변경할 때는 PayStore를 수정하면 되겠지요?
추상 클래스에 + static을 사용하면 개발자에게 이 클래스는 객체를 생성하지 말고, static에 있는 기능만 사용하라는 관례가 됩니다. 여기서는 PayStore의 경우 객체를 생성하는게 크게 의미가 없기 때문에 단순하게 static 메서드만 사용하도록 했습니다. 물론 객체를 생성하도록 추상 클래스를 제거하고 static를 함께 제거하셔도 됩니다.
감사합니다.
답변해주셔서 정말 감사합니다!!
답변을 보니 강의에서 현업에서의 관례, 또 그런 관례를 사용하게 된 이유를 차례대로 설명해주신게 기억이 나네요.. 뭔가 두 번 질문을 해서 죄송합니다..
항상 기본에 충실하겠습니다!