- 회원 도메인 설계
- 회원 데이터는 자체 DB 구축 또는 외부 시스템과 연동(미확정)
- - 회원 도메인 설계하기
- 클라이언트
- 회원 서비스 (역할)
- 회원가입
- 회원조회
- 회원 저장소 (회원 데이터에 접근하는 계층 따로 만들기, 인터페이스, 역할)
- 구현 =>
- 메모리 회원 저장소 : 메모리니까 컴퓨터 껐다 켜면 날아가므로 개발용으로만 사용, 테스트하거나 로컬에서 개발할 때 사용. 이걸로 개발하다가 나중에 데이터베이스나 외부 시스템이 결정되면 그걸로 바꿔 끼울 것!
- DB 회원 저장소
- 외부 시스템 연동 회원 저장소
- 구현 =>
- 클라이언트
- 회원 클래스 다이어그램(실제 구현레벨로 내려오면!)
- 회원 객체 다이어그램(객체가 실제로 참조하는 주소)
- 클라이언트 -> 회원서비스Impl -> 메모리 회원 저장소
** 윈도우 환경에서 IntelliJ 단축키 찾는 방법
[File] - [Settings] - [Keymap] 에서 원하는 기능 검색 => 단축키 확인 가능 !
- 회원 테스트
위와 같이 매번 main 메서드를 이용해서 (순수 자바코드로 ,,! ) 테스트를 하는 건 한계가 있다. 따라서 junit이라는 테스트 프레임을 사용해서 아래와 같이 테스트를 할 수 있다.
- 회원 도메인 설계의 문제점 !!
- 이 코드의 설계상 문제점은 뭘까?
- 다른 저장소로 변경할 때 OCP원칙을 잘 준수할까?
- DIP를 잘 지키고 있는가?
- 의존관계가 인터페이스 뿐만 아니라 구현까지 모두 의존하는 문제가 있다.
- 실제 할당하는 부분이 구현체를 의존함. MemberServiceImpl이 추상화에도, 구체화에도 의존을 함. 추후 변경이 생기면 문제가 됨.
'Learning-log > Spring & JPA' 카테고리의 다른 글
(스프링 핵심 원리 - 기본편) 3-(1)새로운 할인정책 개발, (2)새로운 할인 정책 적용과 문제점, (3)관심사의 분리 (0) | 2023.03.30 |
---|---|
(스프링 핵심 원리 - 기본편) 2-주문과 할인 도메인 (6) 설계 , (7) 개발, (8)실행과 테스트 (0) | 2023.03.27 |
(스프링 핵심 원리 - 기본편) 2-(1) 프로젝트 생성, (2) 비즈니스 요구사항과 설계 (0) | 2023.03.25 |
(스프링 핵심 원리 - 기본편) 1-(5) 객체 지향 설계와 스프링 (0) | 2023.03.25 |
(스프링 핵심 원리 - 기본편) 1-(4) 좋은 객체 지향 설계의 5가지 원칙(SOLID) (0) | 2023.03.24 |