본문 바로가기

전체 글

(62)
[UML DISTILLED 3판] 3장 클래스 다이어그램 3장 클래스 다이어그램 : 필수요소(Class Diagram : The Essentials) 클래스 다이어그램은 클래스의 프로퍼티(property), 오퍼레이션(operation), 객체들이 연결되는 방법에 적용되는 제약사항(constraints) 프로퍼티 (property) 클래스의 구조적인 특징을 나타냄. 프로퍼티는 단일 개념이지만 두 가지의 다른 표기법으로 나타냄 속성(attribute) 클래스 상자 안에 한 줄의 텍스트로 표시되는 프로퍼티. 연관(association) 두 클래스 사이의 실선으로 표시, 소스 클래스에서 타켓 클래스를 향함. 일반적으로 값타입에 속하는 날짜나, Boolean 값과 같은 작은 것에는 속성을 사용, 고객이나 주문 같은 더 중요한 클래스에 대해서는 연관을 사용함. 다중성(..
[모던 자바 인 액션] 3장 람다 표현식 - 1 * 람다란 무엇인가? * 어디에, 어떻게 람다를 사용하는가? * 실행 어라운드 패턴 * 함수형 인터페이스, 형식 추론 * 메서드 참조 * 람다 만들기 3.1 람다란 무엇인가? 람다 표 현식은 메서드로 전달할 수 있는 익명 함수를 단순화한 것. - 익명 : 보통의 메서드와 달리 이름이 없으므로 익명이라 표현. - 함수 : 람다는 메서드처럼 특정 클래스에 종속되지 않으므로 함수라고 부른다. 하지만 메서드처럼 파라미터 리스트, 바디, 반환형식, 가능한 예외 리스트를 포함한다. - 전달 : 람다 표현식을 메서드 인수로 전달하거나 변수로 저장할 수 있다. - 간결성 : 익명 클래스 처럼 많은 자질구레한 코드를 구현할 필요가 없다. Comparator beWeight = new Comparator() { publi..
[DDD] 7장 도메인 서비스 * 도메인 서비스 여러 애그리거트가 필요한 기능 - > 결제 금액 계산 로직, 누가 실제 결제 금액을 계산해야 하는 주체인가? 한 애그리거트에 넣기 애매한 도메인 기능을 특정 애그리거트에 억지로 구현하면 안된다. - 애그리거트는 자신의 책임 범위를 넘어서는 기능을 구현하기 때문에 코드가 길어지고 외부에 대한 의존을 높아지게 된다. 이는 코드를 복잡하게 만들어 수정을 어렵게 만드는 요인이 된다. - 애그리거트의 범위를 넘어서는 도메인 개념이 애그리거트에 숨어들어서 명시적으로 들어나지 않게 된다. 도메인 서비스 - 상태 없이 로직만 구현한다는 점 - 도메인 서비스를 구현하는 데 필요한 상태는 애그리거트나 다른 방법으로 전달 받는다. 도메인 서비스의 패키지 위치 domain model service repos..
html table https://www.tablesgenerator.com/html_tables
[모던 자바 인 액션] 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..