책 (19) 썸네일형 리스트형 [모던 자바 인 액션] 3장 람다 표현식 - 1 * 람다란 무엇인가? * 어디에, 어떻게 람다를 사용하는가? * 실행 어라운드 패턴 * 함수형 인터페이스, 형식 추론 * 메서드 참조 * 람다 만들기 3.1 람다란 무엇인가? 람다 표 현식은 메서드로 전달할 수 있는 익명 함수를 단순화한 것. - 익명 : 보통의 메서드와 달리 이름이 없으므로 익명이라 표현. - 함수 : 람다는 메서드처럼 특정 클래스에 종속되지 않으므로 함수라고 부른다. 하지만 메서드처럼 파라미터 리스트, 바디, 반환형식, 가능한 예외 리스트를 포함한다. - 전달 : 람다 표현식을 메서드 인수로 전달하거나 변수로 저장할 수 있다. - 간결성 : 익명 클래스 처럼 많은 자질구레한 코드를 구현할 필요가 없다. Comparator beWeight = new Comparator() { publi.. [DDD] 7장 도메인 서비스 * 도메인 서비스 여러 애그리거트가 필요한 기능 - > 결제 금액 계산 로직, 누가 실제 결제 금액을 계산해야 하는 주체인가? 한 애그리거트에 넣기 애매한 도메인 기능을 특정 애그리거트에 억지로 구현하면 안된다. - 애그리거트는 자신의 책임 범위를 넘어서는 기능을 구현하기 때문에 코드가 길어지고 외부에 대한 의존을 높아지게 된다. 이는 코드를 복잡하게 만들어 수정을 어렵게 만드는 요인이 된다. - 애그리거트의 범위를 넘어서는 도메인 개념이 애그리거트에 숨어들어서 명시적으로 들어나지 않게 된다. 도메인 서비스 - 상태 없이 로직만 구현한다는 점 - 도메인 서비스를 구현하는 데 필요한 상태는 애그리거트나 다른 방법으로 전달 받는다. 도메인 서비스의 패키지 위치 domain model service repos.. [모던 자바 인 액션] 2장 동작 파라미터화 코드 전달하기 동작 파라미터화(behavior parameterization) - 자주 바뀌는 요구사항에 효과적으로 대응할 수 있다. - 동작 파라미터화란 아직은 어떻게 실행할 것인지 결정하지 않은 코드 블록을 의미한다. - 코드의 실행은 나중으로 미뤄진다. 2.1 변화하는 요구사항에 대응하기 - 거의 비슷한 코드가 반복 존재한다면 그 코드를 추상화 한다. 2.2 동작 파라미터화 - 참 또는 거짓을 반환하는 함수를 프레디케이트라고 한다. 선택 조건을 결정하는 인터페이스를 정의. - 동작 파라미터화, 즉 메서드가 다양한 동작(또는 전략)을 받아서 내부적으로 다양한 동작을 수행할 수 있다. 2.3 복잡한 과정 간소화 - 자바는 클래스의 선언과 인스턴스화를 동시에 수행할 수 있도록 익명 클래스라는 기법을 제공. // 첫 번.. [DDD START!] 3장 애그리거트 - 애그리거트 - 애그리거트 루트와 역할 - 애그리거트와 리포지터리 - ID를 이용한 애그리거트 참조 애그리거트 관련된 객체를 하나의 군으로 묶어준다. -> 좀 더 상위 수준에서 도메인 모델 간의 관계를 파악할 수 있다. 애그리거트는 모델을 이해하는 데 도움을 줄 뿐만 아니라 일관성을 관리하는 기준이 된다. 애그리거트에 속한 객체는 유사하거나 동일한 라이프사이클을 가진다. 애그리거트는 독립된 객체군이며, 각 애그리거트는 자기 자신을 관리할 뿐 다른 애그리거트를 관리하지 않는다. A가 B를 갖는다고 한 애그리거트에 있지는 않음 -> 상품 리뷰와 상품 상세가 그러함. -> 라이프사이클이 다름, 변경의 주체가 다름. 다수의 애그리거트가 한 개의 엔티티 객체만 갖는 경우가 많음 드물게 2개 이상의 엔티티로 구성.. [DDD START!] 2장 아키텍처 개요 아키텍처 DIP 도메인 영역의 주요 구성요소 인프라스트럭처 모듈 네 개의 영역 표현 : 사용자의 요청을 받아 응용 영역에 전달하고 응용 영역의 처리 결과를 다시 사용자에게 보여주는 역할. 웹 어플리케이션에서 표현 영역은 HTTP 요청을 응용 영역이 필요로 하는 형식으로 변환해서 응용 영역에 전달하고, 응용 영역의 응답을 HTTP 응답으로 변환해서 전송한다. 응용 : 시스템이 사용자에게 제공해야 할 기능을 구현한다. 기능을 구현하기 위해 도메인 영역의 도메인 모델을 사용한다. 응용 서비스는 로직을 직접 수행하기보다는 도메인 모델에 로직 수행을 위임한다. 도메인 : 도메인 모델을 구현한다. 도메인 모델은 도메인의 핵심 로직을 구현한다. 인프라스트럭쳐 : 구현기술에 대한 것을 다룬다. RDBMS 연동을 처리하.. [DDD START!] 1장 도메인 모델 시작 도메인 모델 엔티티와 밸류 도메인 용어 도메인 - 소프트웨어로 해결하고자 하는 문제 영역, 즉 도메인(domain) - 한 도메인은 하위 도메인으로 나눌 수 있다. 도메인 모델 - 특정 도메인을 개념적으로 표현한 것 - 도메인 모델을 사용하면 여러 관계자들이 동일한 모습으로 도메인을 이해하고 도메인 지식을 공유하는 데 도움이 된다. - 도메인을 이해하려면 도메인이 제공하는 기능과 도메인의 주요 데이터 구성을 파악해야 한다. 이런 면에서 기능과 데이터를 함께 보여주는 객체 모델은 도메인을 모델링 하기에 적합하다. - 도메인 모델은 기본적으로 도메인 자체를 이해하기 위한 개념 모델. 도메인 모델 패턴 일반적인 애플리케이션의 아키텍쳐 구성 계층(Layer) 설명 사용자인터페이스 (UI) 또는 표현 (Prese.. [DDD START!] 6장 응용 서비스와 표현 영역 응용 서비스 구현 표현 영역의 역할 값 검증과 권한 검사 표현영역 : 사용자의 요청을 해석한다. 응용 서비스 : 사용자(클라이언트)가 요청한 기능을 실행한다. 응용 서비스는 사용자의 요청을 처리하기 위해 리포지터리로부터 도메인 객체를 구하고, 도메인 객체를 사용한다. 응용 서비스는 주로 도메인 객체 간의 흐름을 제어하기 때문에 다음과 같이 단순한 형태를 갖는다. public Result doSomeFunc(SomeReq req) { // 1. 리포지터리에서 애그리거트를 구한다. SomeAgg agg = someAggRepository.fineById(req.getId()); checkNull(agg); // 2. 애그리거트의 도메인 기능을 실행한다. agg.doFunc(req.getValue()); //.. [모던 자바 인 액션] 1장 Collctions.sort(inventory, new Comparator() { public int compare(Apple a1, Apple a2) { return a1.getWeight().compareTo(a2.getWeight()); } } inventory.sort(comparing(Apple::getWeight)); 자바 8 설계의 밑바탕을 이루는 세 가지 프로그래밍 개념 1. 스트림 처리(stream processing) - 스크림이란 한 번에 한 개씩 만들어지는 연속적인 데이터 항목들의 모임이다. - 자바 8에서는 java.util.stream 패키지에 스트림 API가 추가되었다. - 스레드라는 복잡한 작업을 사용하지 않으면서도 공짜로 병렬성을 얻을 수 있다. 2. 코드 일부를 API로 .. 이전 1 2 3 다음