본문 바로가기
반응형

전체 글154

[디자인 패턴] CQS(Command Query Separation) Pattern CQS(Command Query Separation) Pattern은 소프트웨어 디자인 패턴 중 하나이다. 다음과 같은 이유로 나눈다. Command: 객체의 내부 상태를 바꾼다.(생성, 수정, 삭제) Query: 객체의 값만 반환한다.(조회) 예시로 Product 도메인에 대해서 서비스를 ProductCommandService, ProductQueryService로 나눈다. 예시 코드 ProductCommandService 어노테이션 @Transactional Command: 객체의 내부 상태를 바꾼다.(생성, 수정, 삭제) @Service @Transactional @RequiredArgsConstructor public class ProductCommandService { private final .. 2022. 11. 3.
[프로그래머스] Lv.0 삼각형의 완성조건 (2) * 순서 - 문제 - 문제설명 - 문제풀이 - 최종코드 - 문제 - 문제설명 세 개로 삼각형을 만들려고 한다. 두변의 길이가 주어질 때 나머지 한변을 구한다. 나머지 한변이 될 수 있는 정수의 개수를 구하는 문제이다. 조건: 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 한다. - 문제풀이 1. 나머지 한변의 길이의 범위는 두 변의 길이의 합까지로 한다.(나머지 한변의 길이가 가장 길 경우일 때 나머지 한 변의 길이가 최대값이기 때문) 2. a, b, c 세 변의 길이 중에서 한 변의 길이가 가장 클 경우에 대해 분기를 나눈다. 3. 조건을 적용한다.(조건: 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 한다.) 4. Set을 이용하여 나머지 한변의 길이의 중복을 막는다. 1. 나머.. 2022. 10. 28.
[프로그래머스] Lv.0 안전지대 [JAVA] * 순서 - 문제 - 문제설명 - 문제풀이 - 최종코드 - 문제 - 문제설명: 지뢰가 있는 지역은 1로 표시되며 위험지역이다.. 지뢰가 있는 지역으로부터 왼쪽, 오른쪽, 위, 아래, 왼쪽위, 오른쪽위, 왼쪽아래, 오른쪽아래는 위험지역이다. 안전지역의 개수를 리턴한다. - 문제풀이: 1. 1표시가 있는 지뢰가 있는 지역을 찾는다. 2. 지뢰를 찾았으면 왼쪽, 오른쪽, 위, 아래, 왼쪽위, 오른쪽위, 왼쪽아래, 오른쪽아래를 2로 표시한다.(위험지역이라는 임의표시) 3. 안전지역인 0개수를 구한다. 1. 1표시가 있는 지뢰가 있는 지역을 찾는다. //1찾기 for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if(board[i][j] == 1) { che.. 2022. 10. 27.
[LeetCode] 2446. Determine if Two Events Have Conflict​ * 순서 - 문제 - 문제설명 - 문제풀이 - 최종코드 - 문제 - 문제설명: 두 이벤트(시작 시간, 끝나는 시간)이 배열로 주어졌을 때 겹치는 시간이 있는지 없는지를 구하시오 - 문제풀이: 1. 각각의 String 이벤트를 LocalTime으로 parse한다.(parseStringToLocalTime() 이용) 2. 시간이 겹치는지 isBefore(), isAfter() 이용 3. 시간이 같을 경우 equals() 이용 haveConflict(): 시간이 겹치는지, 시간이 같은지 체크하는 메서드 public static boolean haveConflict(String[] event1, String[] event2) { LocalTime localTime1Start = parseStringToLocal.. 2022. 10. 23.
h2 데이터베이스 모든 테이블 삭제 application.yml에서 ddl-auto: create를 해도 h2 데이터베이스 목록에는 테이블이 여전히 남아있다. 모든 테이블을 삭제하고 싶을때 아래 쿼리를 실행한다. drop all objects 2022. 10. 18.
6. 메시지와 인터페이스 - 2 코드스피츠 4강 내용 ❗핵심내용: OCP와 제네릭을 통한 해결 if + instanceof 코드를 클라이언트 방향으로 밀어내야함. 클라이언트를 여러개 만들고 매핑해야함 클라이언트층은 서비스를 다룸 객체설계를 시키는 식으로 만들면 되는데 물어보는 식으로 만들기 때문에 안되는거임 →제일 좋은 것은 시키는것. 그래야 영향을 안받음. LSP(리스코프 치환 원칙): 자식형을 부모형으로 완전히 대체할 수 있다. 문제점 원인: 성급한 추상화 기존보다 메서드 개수가 줄어든다면 괜찮다. 기존보다 메서드가 늘어날 경우 문제가 생김 다운캐스팅을 사용하면 안됨 다운캐스팅: OCP 위반을 일으킴 →제너릭을 통해 해결하자 설계 상에서 LSP, OCP를 지키려고 하자 → if + instanceof 를 쓰지 말자. 문제: 추상형에.. 2022. 10. 14.
6. 메시지와 인터페이스 - 1 목차 협력과 메시지 클라이언트-서버 모델 메시지와 메시지 전송 메시지와 메서드 퍼블릭 인터페이스와 오퍼레이션 시그니처 인터페이스와 설계 품질 묻지 말고 시켜라 의도를 드러내는 인터페이스 함께 모으기 원칙의 함정 디미터 법칙은 하나의 도트(.)를 강제하는 규칙이 아니다 결합도와 응집도의 충돌 명령-쿼리 분리 원칙 반복 일정의 명령과 쿼리 분리하기 명령-쿼리 분리와 참조 투명성 책임에 초점을 맞춰라 2022. 10. 14.
5. 책임 할당하기 - 5 🐿️ 4장 초반에 개발한 데이터 중심 설계를 리팩토링하는 과정을 통해 리팩토링으로 책임을 할당하는 방법의 장점을 설명 🗣️ 책임 주도 설계의 대안 1. 메서드 응집도 중요한 것은 메서드의 이름과 메서드 몸체의 의미적 차이 객체로 책임을 분배할 때 가장 먼저 할 일: 메서드를 응집도 있는 수준으로 분해하는 것 → 긴 메서드를 작고 응집도 높은 메서드로 분리하면 각 메서드를 적절한 클래스로 이동하기가 더 수월해짐 작고, 명확하며, 한 가지 일에 집중하는 응집도 높은 메서드는 변경 가능한 설계를 이끌어 내는 기반이 된다. 이런 메서드들이 하나의 변경 이유를 가지도록 개선될 때 결과적으로 응집도 높은 클래스가 만들어진다. 2. 객체를 자율적으로 만들자 어떤 메서드를 어떤 클래스로 이동시켜야 하는가 : 메서드가 .. 2022. 10. 14.

반응형
반응형