스프링 핵심 원리(기본편)

Ch02. 스프링 핵심 원리 이해(예제 만들기) - 회원 도메인 설계

webmaster 2022. 2. 15. 20:25
728x90
  • 회원 도메인 요구사항
    • 회원을 가입하고 조회할 수 있다.
    • 회원은 일반과 VIP 두 가지 등급이 있다.
    • 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정)
  • 회원 도메인 협력 관계
    • 메모리 회원 저장소, DB 회원 저장소, 외부시스템 연동 회원 저장소를 선택하여 회원저장소에 낄 수 있다.
  • 회원 클래스 다이어그램
    • 다이어그램
  • 회원 객체 다이어그램
    • 객체간의 참조를 보여주는 객체 다이어그램

회원 도메인 개발

  • Grade.class
    • Member 등급
  • Member.class
    • public class Member {
          private Long id;
          private String name;
          private Grade grade;
      
          public Member(Long id, String name, Grade grade) {
              this.id = id;
              this.name = name;
              this.grade = grade;
          }
      
          public Long getId() {
              return id;
          }
      
          public void setId(Long id) {
              this.id = id;
          }
      
          public String getName() {
              return name;
          }
      
          public void setName(String name) {
              this.name = name;
          }
      
          public Grade getGrade() {
              return grade;
          }
      
          public void setGrade(Grade grade) {
              this.grade = grade;
          }
      }
  • MemberRepository, MemoryMemberRepository
    • 인터페이스로 구현하여 후에 구현체만 갈아 끼운다
    • Memory를 사용한다는 가정하에 구현
  • MemberService, MemberServiceImpl
    • 인터페이스로 구현한다.


    • memberServiceImpl을 구현

회원 도메인 실행과 테스트

  • MemberApp(순수한 자바 코드)
    • 순수 자바코드로 자동화테스트를 하기 힘들기 때문에 Junit을 사용한다.
  •  MemberServiceTest
    • MemberService 테스트(JUnit)
  • 회원 도메인 설계의 문제점
    • 이 코드의 설계상 문제점은 무엇일까요?
    • 다른 저장소로 변경할 때 OCP 원칙을 잘 준수할까요?
    • DIP를 잘 지키고 있을까요?
    • 의존관계가 인터페이스 뿐만 아니라 구현까지 모두 의존하는 문제점이 있음
    • 주문까지 만들고나서 문제점과 해결 방안을 설명

 

728x90