분류 전체보기(63)
-
Strategy(전략) 패턴
[목차] 1. 전략패턴에 대해 알아보자 2. 전략패턴은 왜 필요할까? 3. 코드로 구현해보자 3.1 파트너 수수료 3.2 파트너 수수료 코드 설명 3.3 새로운 요구사항 "딜러라는 파트너 추가해주세요!" 3.4 새로운 요구사항에 맞추어서 코드 설명 4. 전략패턴으로 구현한 파트너 수수료금액 구하기 4.1 전략패턴 다이어그램 4.2 전략패턴 Source code 4.3 전략패턴 Source code_Dealer 추가 5. 결론 1. 전략패턴에 대해 알아보자 전략패턴(StrategyPattern)은 알고리즘군을 정의하고 캐슐화해서 각각의 알고리즘군을 수정해서 쓸 수 있게 해줍니다. 전략패턴을 사용하면 클라이언트로부터 알고리즘을 분리해서 독립적으로 변경할 수 있습니다. - 헤드퍼스트 디자인 패턴 60p - 헤..
2024.02.10 -
순수 Java Project에서 Logback 사용할 수 있을까?
[목차] 1. 글을 쓴 이유 2. logback 설정방법 3. logback 사용방법 4. (추가) 로그에 색깔 넣기 1. 글을 쓴 이유 System.out.println 보다 log로 코드결과 값을 확인하고 싶어서 java project에 추가하려고 하니 스프링 설정 프로젝트에서만 글이 많이 나오고 자바 프로젝트에 대해서는 나오지 않았다. 그 이유를 혼자서 생각해보니 디버거를 하면 되서 log를 찍을 필요가 없지 않았을까라는 생각을 해본다. 하지만 알고리즘 풀면서 log에 찍고 싶었고 어차피 로그 설정하는 방법을 알아보고자 해서 한번 설정을 해본다. 2. logback 설정방법 먼저 gradle 프로젝트로 이루어진 자바프로젝트가 있다면 그걸로 설정할 것이다. 먼저 gradle logback을 찾아봐야해..
2024.02.07 -
Two Sum - LeetCode
[목차] 1. 문제 2. 문제 설명 3. 문제 풀이 4. code 5. 배운점 1. 문제 Two Sum - LeetCode 2. 문제설명 예제 2를 보자 [3, 2, 4] , target = 6 output = [1, 2] 저 집합에서 더해가지고 6이 나오는 원소를 구하는 문제이다. 저기 보면 output(정답)은 1, 2이다. 즉 1번째인 2와 2번째인 4를 더해서 6이 나온다. (여기서 1번째=2 인것을 이해 못하신 분은 컴퓨터에서는 첫번째가 0으로 시작한다.즉 0번째 3, 1번째 2, 2번째 4 이다. ) 3. 문제풀이 3.1 첫번째 풀이 (Brute Force 방식) example2 [3, 2, 4] , target = 6 output = [1, 2] 위에 그림처럼 하나의 원소가 기준이 되고 오른..
2024.01.25 -
Template Callback Pattern(템플릿 콜백 패턴) - 견본 /회신 패턴
[목차] 1. 게시물을 작성한 이유 2. 설명 3. 예제 4. Refactoring 5. 결론 6. 추가 : System.out.println(제외하기) 1. 게시물을 작성한 이유 회사에서 운영을 하면서 여러가지 요구조건이 있을때 참으로 아쉬운 점이 많았다. 그 아쉬운점은 여러가지 요구사항을 듣고 그것을 패턴화를 못했기 때문이다. 물론 지식적인 부분에 부족한 점이 있을 수 있지만, 공부를 한 부분도 딱 떠오르지가 않았다. 마침 '스프링 객체지향과 원리' 라는 책을 읽었는데 거기서 스프링이 자주 사용하는 템플릿콜백 패턴이라고 해서 블로그 글을 작성하려고 한다. 2. 설명 템플릿 콜백 패턴에 대해서 설명하겠다. 스프링의 3대 프로그래밍 모델 중 하나인 DI에서 사용하는 특별한 형태의 전략패턴이다. 템플릿 콜..
2024.01.11 -
스프링 MVC 서블릿 컨테이너 초기화 지원
지난 포스팅에서 하나하나 서블릿 컨테이너와 디스패쳐 서블릿을 연결하고 그거를 또 스프링컨테이너랑 연결하는 작업을 해보았다. 해보았을 때 느낀점은 진짜 많은 일을 해줘야하고, 이걸 다 기억 언제하지? 라는 생각이 들었다. 지난 과정을 보면 1) ServletContainerInitializer interface를 구현해서 서블릿 컨테이너 초기화 코드를 만들었음. 2) 어플리케이션 초기화를 위해서 @HandlesTypes annotation을 적용함 3) /META-INF/services/jakarta.servlet.ServletContainerInitializer 파일에 서블릿 컨테이너 초기화 클래스 경로를 지정함 이렇게 해줘야하는데 너무 번거롭고 힘들다. 그래서 개발자들이 힘든것을 알았는데 스프링MVC에..
2023.11.27