dip 2

SOLID 원칙

학습 목표SOLID 다섯 원칙의 의도와 위반 신호를 설명할 수 있다.SRP·OCP·ISP가 변경 이유·확장·인터페이스를 분리하는 방법을 예제로 설명할 수 있다.LSP가 대체 가능성을 보장하는 조건임을 설명할 수 있다.DIP가 헥사고날·클린의 의존 방향과 어떻게 맞물리는지 설명할 수 있다.문제 상황OrderService 800줄 — 주문·결제·알림·PDF·통계가 한 클래스알림 템플릿 바꿀 때마다 주문 로직 회귀 테스트할인 정책 추가할 때마다 if (type == …) 분기만 늘어남Square extends Rectangle — setWidth만 바꿨는데 height도 바뀜, 테스트 깨짐Repository 인터페이스에 save, sendEmail, generateReport가 같이 있음mock 구현하려면 쓰..

헥사고날과 클린 아키텍처

학습 목표헥사고날 아키텍처(Ports and Adapters) 에서 포트·어댑터·애플리케이션 코어 역할을 설명할 수 있다.클린 아키텍처의 의존성 규칙(안쪽으로만 의존)을 설명할 수 있다.의존성 역전(DIP) 이 DB·UI에 도메인이 끌려가지 않게 만드는 원리임을 설명할 수 있다.레이어드와 도메인 중심 구조의 차이·트레이드오프를 비교할 수 있다.문제 상황레이어드로 나눴는데 Service가 JPA Entity에 묶여 있다DB를 Mongo로 바꾸려면 비즈니스 코드까지 뒤집힌다단위 테스트마다 DB를 띄워야 한다Repository 구현이 도메인 테스트 전제가 됨OrderController → OrderService → OrderRepository는 맞는데 인터페이스가 없다mock 없이 통합 테스트만 가능"클린 아..