만들면서 배우는 클린 아키텍쳐
·
Book/DEV
들어가며보통 스프링 프로젝트를 시작하게 되면 계층형 아키텍쳐를 쉽게 채택한다.계층형 아키텍쳐의 대안에 대해 미리 알아두고, 필요할 때 잘 채택할 수 있도록 해당 서적을 읽기 시작했다.나아가 기존 프로젝트의 결합도를 낮출 수 있는 방법에 실습하며 익혀보고자 했다.계층형 아키텍쳐 영속성 계층에 의존하기 때문에 데이터베이스 설계에 의존하게 된다.데이터베이스의 구조를 먼저 생각하고, 이를 토대로 도메인 로직을 구현하게 된다.영속성 개체에 대한 의존성이 높아지면, 개발자들의 병렬(동시) 작업에 어려움이 생길 수 있다.ex) 엔티티의 변경이 발생해 서비스 코드의 변화가 생김 -> merge conflict의존성 역전컴포넌트 사이의 의존성이 생기면 상위 컴포넌트의 변경이 생길 때 마다 하위 컴포턴트의 변경이 불가피..
Effective Java - 상속과 합성
·
Book/DEV
상속보다는 합성을 우선시하자 상속은 도형 - 동그라미 관계에서 도형은 각, 면적, 기타 등의 필드가 존재한다. 상속은 캡슐화를 깨트릴 우려가 있다. ➡️ 캡슐화가 깨진다? : 상위 클래스를 수정하였을 때 하위 클래스에 미치는 영향이 생긴다는 뜻에서 캡슐화가 깨진다고 묘사 또한 상속을 이용하게 되면 상위 클래스에 변경이 생기게 될 경우 상속받은 모든 하위 클래스에서 변경이 일어난다. 순수한 is-a 관계에서만 상속을 사용하고, 그 외의 경우에는 합성을 사용하는 것이 바람직하다 자바 9 이상부터 정적 팩토리 메서드를 지원한다. Arrays.asList 안 쓰고 List.of, Map을 새로 생성 할 때는 Map.of을 사용하자. 다만 불변 객체가 되기 때문에 UnsupportedOperationExcepti..