make it simple
article thumbnail
[DDD] 도메인 주도 개발 시작하기 CH_3.Aggregate(애그리거트)
책/도메인 주도 개발 2023. 2. 6. 01:19

애그리거트란? 위 처럼 백 개 이상의 테이블을 위처럼 ERD(Entity Relationship Diagram)로 모두 표시하면 테이블관의 관계를 파악하느라 큰 틀에서 데이터 구조를 이해하는데 어렵다. 도메인 객체 모델이 복잡해지면 개별 구성요소 위주로 모델을 이해하고 전반적인 구조나 큰 수준에서 도메인 간의 관계를 파악하기 어려워진다. 주요 도메인 요소 간의 관계를 파악하기 어렵다는 것은 코드를 변경하고 확장하는 것이 어려워 진다는것이다. 상위 수준에서 도메인 모델의 관계를 알아야 전체 모델을 망가뜨리지 않으면서 추가 요구 사항을 모델에 반영한다. 당장 돌아가게끔은 코드를 추가할 수 있지만 장기적으로 봤을 때는 스파게티 코드가 될 확률이 높으며 유지보수가 어려워진다. 복잡한 도메인을 이해하고 관리하기 ..

article thumbnail
[DDD] 도메인 주도 개발 시작하기 CH_2.아키텍쳐 개요
책/도메인 주도 개발 2023. 2. 2. 23:05

표현,응용,도메인,인프라스트럭처 는 아키텍처를 설계할 때 출현하는 전형적인 4개의 영역이다. 표현: 사용자의 요청 -> 응용 영역(서비스) -> 사용자 응답 응용: 응용 서비스는 로직을 직접 수행하기보다는 도메인 모델에 로직 수행을 위임. 밑 코드도 주문 취소 로직을 직접 구현하지 않고 Order 객체에 취소 처리를 위임하고 있다. public class CancelOrderService { @Transactional public void cancelOrder(String orderId){ Order order = findOrderById(orderId); if (order == null) throw new OrderNotFoundException(orderId); order.cancel(); } .....

article thumbnail
[JAVA] 문자열에서 반복되는 문자 제거
코딩 테스트/기타 2023. 1. 29. 23:56

문자열에서 반복되는 문자를 제거하고 문자를 추출하면 된다 ex) stkrktti ----> srkti import java.util.Scanner; public class problem6 { public static void main(String[] args) { problem6 prob = new problem6(); Scanner sc = new Scanner(System.in); String word = sc.nextLine(); System.out.println(prob.solution(word)); } public String solution(String word) { StringBuilder answer = new StringBuilder(); char[] arr = word.toCharArr..

article thumbnail
[JAVA] 백준 5585: 거스름돈
코딩 테스트/백준 2023. 1. 29. 23:55

https://www.acmicpc.net/problem/5585 Scanner sc = new Scanner(System.in); int pay = sc.nextInt(); int[] arr = new int[]{500,100,50,10,5,1}; int change = 1000 - pay; // 잔돈 초기화 int count = 0; // 숫자 세는 변수 for(int i=0; i= arr[i]){ count += change/arr[i]; //잔돈 카운트 change = change%arr[i]; //나머지 거스름돈 } } System.out.println(count); 입력: 380 출력: 4 거스름돈: 620엔 -> 500엔1개 100엔1개 10엔 2개 성공!

article thumbnail
[JAVA] 문자 뒤집기
코딩 테스트/기타 2023. 1. 29. 23:53

문제 문자 배열을 뒤집어보자 ex) KIMCHI -> IHCMIK import java.util.ArrayList; import java.util.Scanner; public class problem4 { public static void main(String[] args) { problem4 prob = new problem4(); Scanner sc = new Scanner(System.in); int input = sc.nextInt(); String[] str = new String[input]; for(int i=0; i