순수 자바로 구현
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);
}
}
인터페이스를 사용함으로써 역할과 구현의 분리를 할 수 있다.
public class MemberServiceImpl implements MemberService{
private final MemberRepository memberRepository = new MemoryMemberRepository(); //DIP를 위반하고 있음
...
}
위의 코드는 현재 역할과 구현 모두에 의존을 하고 있다.
내가 생각한 해결 방법?
스프링 의존성 주입의 3가지 방법인
1. 생성자 주입
2. setter주입
3. 필드 주입
의 방법을 사용한다.
도메인 협력관계, 클래스 다이어그램, 객체 다이어그램의 활용
도메인 협력관계를 활용하여 기획자와의 의사소통을 할 수 있다고 강의에서 들었다.
⇒새로 진행하는 프로젝트에서는 기획자의 요구사항이 잘 전달됐는지 확인하기 위해 도메인 협력관계를 적용해봐야겠다.