티스토리 뷰
public enum Grade {
//BASIC,
//VIP
}
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;
}
// Getter Setter 만들어줌.
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;
}
}
인터페이스를 만들어줌.
public interface MemberRepository {
void save(Member member);
Member findById(Long memberId);
}
회원저장소
DB가 확정이 되지 않았기 때문에 메모리에 저장하는 MemoryMemberRepository를 만들어줌.
- 실무에서는 Concurrent HashMap을 사용해야 함 (여기서는 HashMap을 사용)
public class MemoryMemberRepository implements MemberRepository {
private static Map<Long, Member> store = new HashMap<>();
@Override
public void save(Member member) {
store.put(member.getId(), member);
}
@Override
public Member findById(Long memberId) {
return store.get(memberId);
}
}
회원서비스
public interface MemberService {
void join(Member member);
Member findMember(Long memberId);
}
회원서비스 구현체
관례: 구현체가 하나 있을 경우 인터페이스 이름 뒤에 impl이라고 많이 붙임
public class MemberServiceImpl implements MemberService {
private final MemberRepository memberRepository = new MemoryMemberRepository();
@Override
public void join(Member member) {
memberRepository.save(member);
}
@Override
public Member findMember(Long memberId) {
return memberRepository.findById(memberId);
}
}
[출처] 스프링 핵심 원리 - 김영한님 의 강의를 듣고 정리한 내용입니다.
'JAVA > Spring Framework' 카테고리의 다른 글
lombok 어노테이션 정리 (0) | 2021.12.21 |
---|---|
프론트 컨트롤러 패턴 (0) | 2021.05.23 |
객체 지향 설계와 스프링 (0) | 2021.02.21 |
좋은 객체 지향 설계의 5가지 원칙(SOLID) (0) | 2021.02.21 |
좋은 객체 지향 프로그래밍이란? (0) | 2021.02.21 |