🧐강의🧐
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard
✨ 회원 도메인 설계하기
· 회원 도메인 요구사항
》회원 가입 & 조회
》회원 등급 : 일반, VIP
》(미확정) 회원 데이터 자체 DB 구축 가능, 외부 시스템 연동 가능성
· 회원 도메인 협력 관계
· 회원 클래스 다이어그램
➡️ 인터페이스 : MemberService
➡️ 구현체 : MemberServiceImpl
➡️ MemberRepository = 회원 저장소
· 회원 객체 다이어그램 (객체 간 메모리 참조)
➡️ 회원 서비스 : MemberServiceImpl
✨ 회원 도메인 개발하기
1. 회원 Package 생성 : member
2. 회원 등급 Enum 생성 (Grade) → BASIC, VIP
3. Member Class 생성 → id, name, grade
4. MemberRepository Interface 생성
public interface MemberRepository {
void save(Member member);
Member findById(Long memberId);
}
5. MemberRepository 구현체 Class 생성 : MemoryMemberRepository
· Map<Long, Member> store = new HashMap<>()
· save : store.put(member.getId(), member)
· findById : store.get(memberId)
6. MemberService Interface 생성
public interface MemberService {
void join(Member member); // 회원 가입
Member findMember(Long memberId); // 회원 조회
}
7. MemberService 구현체 Class 생성 : MemberServiceImpl
· MemberRepository memberRepository = new MemoryMemberRepository()
· join : memberRepository.save(member)
· findMember : memberRepository.findById(memberId)
✨ Test
1. main/java/hello.core/MemberApp Class 생성 후 테스트
public class MemberApp {
public static void main(String[] args) { // psvm
// 회원 가입
MemberService memberService = new MemberServiceImpl();
Member member = new Member(1L, "memberA", Grade.VIP); // ctrl + alt + v
memberService.join(member);
// 회원 조회
Member findMember = memberService.findMember(1L);
System.out.println("new member = " + member.getName());
System.out.println("findMember = " + findMember.getName());
}
}
2. test/java/hello.core/member Package 생성
3. 생성한 패키지에 MemberServiceTest Class 생성 후 테스트
public class MemberServiceTest {
MemberService memberService = new MemberServiceImpl();
@Test
void join() {
// given
Member member = new Member(1L, "memberA", Grade.VIP);
// when
memberService.join(member);
Member findMember = memberService.findMember(1L);
// then
Assertions.assertThat(member).isEqualTo(findMember);
}
}
문제점
- 인터페이스 뿐만이 아니라 구현체도 직접 호출 중
'Spring > 스프링 핵심 원리 - 기본편' 카테고리의 다른 글
[이해2 - 객체 지향 원리 적용] 새로운 할인 정책 도입 (+ 문제점) (0) | 2023.11.09 |
---|---|
[이해1 - 예제 만들기] 주문과 할인 도메인 설계 → 개발 → 테스트 (0) | 2023.11.08 |
[이해1 - 예제 만들기] 비즈니스 요구사항과 설계 - 회원, 주문과 할인 정책 (0) | 2023.11.06 |
[이해1 - 예제 만들기] 프로젝트 생성 & 실행 (0) | 2023.11.05 |
[객체 지향 설계와 스프링] 정리 (0) | 2023.11.02 |