분류 전체보기125 Spring - DIP, OCP를 지키는 도메인 서비스 기존 코드는 이렇게 추상화와 구현체에 모두 의존하고 있지만 이를 생성자를 통해서 분리해주면 아래와 같은 코드가 되면서 MemberServiceImpl에서는 MemoryMemberRepository()인 구현체에 대해서는 의존하지 않기 때문에, DIP를 위반하지 않게된다. 대신 AppConfig에서 MemberService인터페이스는 그의 구현체인 MemberServiceImpl을 부르고, 구현체를 부를때 인수를 통해 MemoryMemberRepository를 생성해서 넣어주게 된다. (생성자 주입) 설계 변경으로 MemberServiceImpl 은 MemoryMemberRepository 를 의존하지 않는다! 단지 MemberRepository 인터페이스만 의존한다. MemberServiceImpl 입장.. 2023. 7. 7. spring - 회원 도메인 설계 회원 도메인 요구사항 회원을 가입하고 조회할 수 있다. 회원은 일반과 VIP 두 가지 등급이 있다. 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정) 회원 클래스 다이어그램 : 정적 회원 객체 다이어그램 : 동적 하지만 이렇게 구현했을시에 문제점들이 있다. //MemberServiceImpl은 MemberRepository에도 의존하고 MemoryMemberRepository에도 의존함 public class MemberServiceImpl implements MemberService{ //이부분에서 DIP 위반, 실제 할당하는 부분이 구현체를 의존함 private final MemberRepository memberRepository = new MemoryMembe.. 2023. 7. 6. Spring - springboot 초기 설정 2023. 7. 6. 좋은 객체 지향 설계의 5가지 원칙 (SOLID) SOLID 클린코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정리 SRP: 단일 책임 원칙(single responsibility principle) ⭐️ OCP: 개방-폐쇄 원칙 (Open/closed principle) LSP: 리스코프 치환 원칙 (Liskov substitution principle) ISP: 인터페이스 분리 원칙 (Interface segregation principle) ⭐️ DIP: 의존관계 역전 원칙 (Dependency inversion principle SRP 단일 책임 원칙 Single responsibility principle 한 클래스는 하나의 책임만 가져야 한다. 하나의 책임이라는 것은 모호하다. 클 수 있고, 작을 수 있다. 문맥과 상황에 .. 2023. 7. 5. 이전 1 ··· 19 20 21 22 23 24 25 ··· 32 다음