[스프링 핵심원리 기본편]

Section2. 예제 만들기

순수 자바로 구현

1. 역할과 구현의 분리

인터페이스 (역할)

public class MemberServiceImpl implements MemberService{

    private final MemberRepository memberRepository = new MemoryMemberRepository(); //DIP를 위반하고 있음
    @Override
    public void join(Member member) {
        memberRepository.save(member);
    }

    @Override
    public Member findMember(Long memberId) {
        return memberRepository.findById(memberId);
    }
}

클래스 (구현)

public class MemoryMemberRepository implements MemberRepository{

    private static HashMap<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);
    }
}

인터페이스를 사용함으로써 역할과 구현의 분리를 할 수 있다.

  • 회원 정보 저장 방식이 달라진다 하더라도 다른 클래스에는 영향을 주지 않는다.
  • 변경에 용이해진다.

2. DIP 위반

public class MemberServiceImpl implements MemberService{

    private final MemberRepository memberRepository = new MemoryMemberRepository(); //DIP를 위반하고 있음
    
    ...
 }

위의 코드는 현재 역할과 구현 모두에 의존을 하고 있다.

내가 생각한 해결 방법?

스프링 의존성 주입의 3가지 방법인
1. 생성자 주입
2. setter주입
3. 필드 주입

의 방법을 사용한다.

3. 다이어그램의 활용

도메인 협력관계, 클래스 다이어그램, 객체 다이어그램의 활용

도메인 협력관계를 활용하여 기획자와의 의사소통을 할 수 있다고 강의에서 들었다.

⇒새로 진행하는 프로젝트에서는 기획자의 요구사항이 잘 전달됐는지 확인하기 위해 도메인 협력관계를 적용해봐야겠다.

0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN