
애그리게이트 💡 상위 수준의 관점 애플리케이션을 개발할 때 상위 수준의 개념을 이용해 전체 모델을 정리하면 전반적인 관계를 이해하는데 도움이 됩니다. 💡 개별 객체 수준의 관점 개별 객체의 관계가 복잡해지면 개별 구성요소 위주로 이해하게 되며, 전반적인 구조나 상위 수준에서 도메인 관계를 파악하기 힘들어집니다. 도메인 요소 간의 관계를 파악하기 힘들다는 것은 코드를 변경하고 확장하는데 어려워진다는 것을 의미합니다. 💡 애그리게이트 수준의 관점 복잡한 도메인을 이해하고 관리하기 쉬운 단위로 만들기 위해서는 상위 수준에서 모델을 바라볼 수 있는 방법이 필요한데 그 방법이 애그리게이트입니다. 수 많은 객체를 애그리게이트 단위로 묶어서 표현하면 상위 수준에서 도메인 모델 간의 관계를 파악할 수 있습니다. 애그리..
조건문 쪼개기 복잡한 조건문이 있을 경우 각 부분을 메서드 추출 기법을 통해 빼내자 💡 동기 및 예제 코드 프로그래밍에서 복잡한 부분은 주로 복잡한 조건문을 파악하는 일입니다. 조건을 검사하고 다양한 조건에 따라 다른 작업을 처리하는 코드를 작성하다 보면 금방 메서드가 길어집니다. 이런 장황한 메서드는 잘게 쪼개고 용도에 맞는 이름을 가지는 메서드 추출기법을 통해 정리를 하면 가독성을 높일 수 있습니다. if (date.isBefore(SUMMER_START) && date.isAfter(SUMMER_END)) { charge = quantity * winterRate + winterServiceCharge; } else { charge = quantity * summerRate; } 💡 리팩토링된 코드..
객체 간의 기능 이동 객체 설계에서 원칙은 아니지만 가장 중요한 일 중 하나가 "기능을 어디에 넣을지 판단하는 것" 입니다. 적절한 위치를 판단하는 개인적인 기준은 우선 정보 전문가를 파악한 후 해당 정보 전문가가 위치한 곳에 넣는 것입니다. 이번 장에서는 기능을 적절한 위치에 넣기 위한 여러가지 방법을 소개하고 있습니다. 하나씩 천천히 살펴보겠습니다. 메서드 이동 메서드가 자신이 속한 클래스보다 다른 클래스의 필드 및 메서드를 더 많이 사용한다면 제일 많이 사용하는 클래스안으로 메서드를 옮기는 것입니다. 💡 동기 및 예제 코드 클래스에 기능이 너무 많거나 클래스가 다른 클래스와 과하게 의존되어 있는 경우 메서드를 옮기는 것이 좋습니다. 메서드를 옮기면 클래스가 간결해지고 명확하게 기능을 구현할 수 있습..

네 개의 영역 💡 표현 영역의 역할 사용자의 요청을 받아 응용 영역이 필요로 하는 데이터 형식으로 변환해서 응용 영역에 전달하며, 응용 영역의 처리 결과를 다시 사용자에게 보여주는 역할을 합니다. 💡 응용 영역의 역할 사용자에게 제공해야할 기능을 구현하며, 기능을 구현하기 위해 도메인 영역의 도메인 모델에 로직 수행의 책임을 위임합니다. 💡 도메인 영역의 역할 도메인 모델은 도메인의 핵심 로직을 구현합니다. 💡 인프라스트럭처 영역의 역할 데이터베이스와 연동을 처리하거나 MQ를 사용하여 메시지 처리 등 논리적인 개념을 표현하기보다 실제 구현을 다룹니다. 계층 구조 아키텍처 서비스 레이어 아키텍처의 구조는 상위 계층은 하위 계층을 의존하되 하위 계층은 상위 계층을 의존해서는 안된다는 것입니다. DIP : 의..
- Total
- Today
- Yesterday
- redis 대기열 구현
- 트랜잭셔널 아웃박스 패턴 스프링 부트 예제
- microkernel architecture
- @ControllerAdvice
- spring boot redisson sorted set
- spring boot poi excel download
- spring boot redisson 분산락 구현
- spring boot excel download oom
- redis sorted set으로 대기열 구현
- 레이어드 아키텍처란
- space based architecture
- java ThreadLocal
- spring boot 엑셀 다운로드
- java userThread와 DaemonThread
- redis sorted set
- transactional outbox pattern
- pipeline architecture
- 트랜잭셔널 아웃박스 패턴 스프링부트
- spring boot redis 대기열 구현
- service based architecture
- 자바 백엔드 개발자 추천 도서
- spring boot excel download paging
- spring boot redisson destributed lock
- polling publisher spring boot
- transactional outbox pattern spring boot
- 서비스 기반 아키텍처
- pipe and filter architecture
- 람다 표현식
- 공간 기반 아키텍처
- JDK Dynamic Proxy와 CGLIB의 차이
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |