본문 바로가기
반응형

전체 글142

[디자인 패턴] 전략(Strategy) 패턴 전략패턴은 (기능을 가지고 있는)컨텍스트에서 알고리즘(전략)을 별도로 분리하는 설계 방법이다. @Service public class TicketSeller { @Transactional public CreateReservationResponse createReservation(CreateReservationRequest dto) { //예약 가능한 좌석인지 확인 performanceSeatInfo.isReserve(ReserveStatus.ENABLE); } } 전략패턴에 집중하기 위해 어노테이션, 기타 코드는 생략하였다. TicketSeller는 공연에 대한 비즈니스 로직을 처리하는 서비스이다. @Entity public class PerformanceSeatInfo extends BaseEntity.. 2024. 2. 8.
[이펙티브 자바] 생성자 대신 정적 팩터리 메서드 고려하라 2장 객체 생성과 파괴 아이템 1. 생성자 대신 정적 팩터리 메서드를 고려하라 예시) static을 통한 from 메서드를 통해 StudentDto를 생성하는 코드이다. public StudentDto(User student) { this.studentId = student.getId(); this.studentName = student.getName(); } public static StudentDto from(User student) { return new StudentDto(student); } 사용방법은 다음과 같다. StudentDto studentDto = StudentDto.from(student); 정적 팩터리 메서드를 적용하면 1. 메서드 이름을 통해 클래스 생성이 가능하다. 정해진 네이.. 2023. 12. 8.
@NoArgsConstructor(access = AccessLevel.PROTECTED) 쓰는 이유 엔터티 혹은 DTO 작성시 @NoArgsConstructor(access = AccessLevel.PROTECTED) 어노테이션을 많이 사용한다. @NoArgsConstructor에 AccessLevel설정으로 AccessLevel.PUBLIC, AccessLevel.PRIVATE, AccessLevel.PROTECTED가 있다. 왜 @NoArgsConstructor(access = AccessLevel.PROTECTED)를 많이 쓰는 것일까? 문제점부터 알아보자. 문제점 @NoArgsConstructor(access = AccessLevel.PUBLIC): 1. 기본 생성자를 사용하는 방식을 여러 곳에서 생성이 가능하다.(BAD) 2. 객체 데이터에 빈값이 들어가는 일관성에 문제가 생길 수 있다. @N.. 2023. 10. 11.
[프로그래머스 Java] 할인 행사 Lv.2 * 순서 - 문제 - 문제 설명 - 문제 목표 - 문제 풀이 - 최종 코드 - 포인트 - 다른 사람 코드 - 문제 - 문제 설명 원하는 제품, 원하는 제품의 개수가 있다. 마트에서 매일 한 제품을 할인하는데 하나씩만 구매할 수 있다. 10일 연속으로 할인 제품을 구매할 수 있는 날짜의 수를 구한다. 제품을 구매할 수 없으면 0을 return한다. - 문제 목표 10일 연속으로 할인 제품을 구매할 수 있는 날짜의 수를 구한다. - 문제 풀이 1. 원하는 제품과 원하는 제품의 수를 wMap에 저장한다. 2. 연속해서 할인 제품 구매할 수 있는 날짜를 세야하니 길이를 다음과 같이 정해서 for문을 돌린다. 3. 할인하는 제품과 개수를 dMap에 저장한다. 4. 할인하는 제품의 개수와 원하는 제품의 개수를 비교.. 2023. 9. 19.
[프로그래머스 Java] 예상대진표 Lv.2 * 순서 - 문제 - 문제 설명 - 문제 목표 - 문제 풀이 - 최종 코드 - 포인트 - 다른 사람 코드 - 문제 - 문제 설명 토너먼트 문제이다. 2명씩 짝을 지어 경기를 하며 참가자 번호가 계속 바뀐다. 선수 A, B는 계속 이긴다. - 문제 목표 선수 A, B가 서로 경기할 때의 라운드를 구하면 된다. - 문제 풀이 1. 1라운드부터 시작하지만 0라운드라고 했을 경우 +1씩 라운드가 같아질 때까지 구하면 된다. 2. 선수번호가 계속 바뀌므로 함수를 이용한다. 3. 짝수일 경우, 몫이 선수 번호가 된다. 4. 홀수일 경우, (몫 + 1) 이 선수 번호가 된다. - 최종 코드 public static int solution(int n, int a, int b) { int answer = 0; //1. .. 2023. 9. 19.
[프로그래머스 Java] 올바른 괄호 Lv.2 * 순서 - 문제 - 문제 설명 - 문제 목표 - 문제 풀이 - 최종 코드 - 포인트 - 다른 사람 코드 - 문제 - 문제 설명 '(' 문자와 ')' 문자로 이루어진 문자열 s가 주어진다. '(' 문자로 시작했으면 짝지어서 ')' 문자로 끝나면 true 반환, 그렇지 않으면 false를 반환한다. - 문제 목표 '(' 문자로 시작했으면 짝지어서 ')' 문자로 끝나는지 확인한다. - 문제 풀이 1. '(', ')' 올바른 짝인지 확인하기 위해 Stack을 이용한다. 2. '(' 문자면 Stack에 넣는다. 3. ')' 문자일 경우, Stack이 비어 있지 않으면 Stack 제일 위 문자열이 '('인지 확인한다. '('일 경우 Stack에서 꺼낸다. 4. ')'일 경우 Stack에 ')'을 넣는다. 5. '.. 2023. 9. 12.
[프로그래머스 Java] 최소값 만들기 Lv.2 * 순서 - 문제 - 문제 목표 - 문제 설명 - 문제 풀이 - 최종 코드 - 포인트 - 문제 - 문제 목표 각각의 숫자를 곱한 값을 더해서 최소값 만들기 - 문제 설명 두개의 배열이 주어진다. 각각의 배열에서 한 숫자씩 정해서 각각의 정한 숫자를 곱하고 곱한 값을 더한다. 모든 숫자를 곱하기 전까지 반복한다. - 문제 풀이 1. 배열값을 오름차순한다. 2. 배열 A에서 최소값과 배열 B에서 최대값을 곱하고 더한다. - 최종 코드 import java.util.Arrays; class Solution { public int solution(int []A, int []B) { int answer = 0; //1. 배열값을 오름차순한다. Arrays.sort(A); Arrays.sort(B); for(int.. 2023. 9. 11.
parser() is deprecated 해결방법 JWT를 이용한 메서드 작성중에 'parser() is deprecated'라는 더이상 사용하지 않는다고 나온다. 그리고 고치는 방법을 친절하게 알려주고 있다. parser() 대신 parserBuilder()를 쓰고 build()를 붙이라고 한다. 문제해결! 2023. 9. 9.

반응형
반응형