헤드 퍼스트 디자인 패턴을 읽고 정리한 글입니다.템플릿 메소드 패턴은 알고리즘의 골격을 정의한다. 템플릿 메소드를 사용하면 알고리즘의 일부 단계를 서브클래스에서 구현할 수 있으며, 알고리즘의 구조는 그대로 유지하면서 알고리즘의 특정 단계를 서브클래스에서 재정의할 수도
헤드 퍼스트 디자인 패턴을 읽고 정리한 글입니다.어댑터 패턴 : 특정 클래스 인터페이스를 클라이언트에서 요구하는 다른 인터페이스로 변환한다. 인터페이스가 호환되지 않아 같이 쓸 수 없었던 클래스를 사용할 수 있게 도와준다.퍼사드 패턴 : 서브시스템에 있는 일련의 인터페
헤드 퍼스트 디자인 패턴을 읽고 정리한 글입니다.커맨드 패턴을 이용하면 요구 사항을 객체로 캡슐화 할 수 있으며, 매개변수를 써서 여러 가지 다른 요구 사항을 집어넣을 수도 있다. 또한 요청 내역을 큐에 저장하거나 로그로 기록할 수도 있으며, 작업 취소 기능도 지원 가
헤드 퍼스트 디자인 패턴을 읽고 정리한 글입니다.싱글턴 패턴은 해당 클래스의 인스턴스가 하나만 만들어지고, 어디서든지 그 인스턴스에 접근할 수 있도록 하기 위한 패턴이다.초콜릿 공장에서는 초콜릿을 끓이는 장치인 초콜릿 보일러를 컴퓨터로 제어한다.이 보일러에서는 초콜릿과
헤드 퍼스트 디자인 패턴을 읽고 정리한 글입니다.느슨한 결합을 이용하는 객체지향 디자인, 객체의 인스턴스를 만드는 작업이 항상 공개되어 있어야 하는 것은 아니며, 오히려 결합과 관련된 문제가 생길 수 있다. 팩토리 패턴을 이용하여 불필요한 의존성을 없애보자추상 팩토리
헤드 퍼스트 디자인 패턴을 읽고 정리한 글입니다.느슨한 결합을 이용하는 객체지향 디자인, 객체의 인스턴스를 만드는 작업이 항상 공개되어 있어야 하는 것은 아니며, 오히려 결합과 관련된 문제가 생길 수 있다. 팩토리 패턴을 이용하여 불필요한 의존성을 없애보자팩토리 메소드
헤드 퍼스트 디자인 패턴을 읽고 정리한 글입니다.데코레이터 패턴을 이용하면 객체에 추가 요소를 동적으로 더할 수 있습니다. 데코레이터를 사용하면 서브 클래스를 만드는 경우에 비해 훨씬 유연하게 기능을 확장할 수 있습니다.OO커피는 단기간에 급속도로 성장한 대형 커피 전
헤드 퍼스트 디자인 패턴을 읽고 정리한 글입니다.옵저버 패턴에서는 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들한테 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다 의존성을 정의한다.실제 기상 정보를 수집하는 장비인 기상 스테이션과 기상 스테이션으로부터
제네릭스란 JDK 1.5부터 도입한 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법이다. 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입 체크를 해주는 기능이다.제네릭스가 필요한 이유는 객체의 타입을 컴파일 시에 체크하기 때문에 객
헤드 퍼스트 디자인 패턴을 읽고 정리한 글입니다.전략 패턴 은 알고리즘군을 정의하고 각각의 알고리즘을 캡슐화하며 교환해서 사용할 수 있도록 만든다. 전략을 사용하면 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경할 수 있다.오리 연못 시뮬레이션 게임에서 오
JVM은 Java virtual machine을 줄인 것으로 자바를 실행하기 위한 가상 컴퓨터이다.자바로 작성된 애플리케이션은 모두 JVM에서만 실행되기 때문에, 자바 애플리케이션을 실행하기 위해서는 JVM이 반드시 필요하다. 컴파일러는 Java 파일을 .class 파
프로젝트를 진행하며 리턴하는 api의 요청 혹은 응답의 DTO 클래스들은 데이터의 형식에 따라 많은 수가 필요하곤 했는데 재사용성을 줄이고 관리적인 측면에서 중첩클래스를 사용함으로써 하나의 dto만으로 완전히 관리될 수 있도록 inner static dto class로
AOP는 관점 지향 프로그래밍. Spring의 핵심 개념중 하나인 DI가 애플리케이션 모듈들 간의 결합도를 낮춰준다면, AOP는 애플리케이션 전체에 걸쳐 사용되는 기능을 재사용하도록 지원하는 것쉽게 말해 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서
스프링 어플리케이션에서 HTTP 요청할 때 사용하는 방법으로 RestTemplate과 WebClient가 있다. 스프링 5.0 이전까지는 클라이언트에서 HTTP 접근을 위해 사용한 것은 RestTemplate 이었다. 스프링 5.0 에서 WebClient가 나왔고 현재
spring jpa를 사용하면서 빈번히 맞닥뜨렸던 n+1 문제 정리 및 프로그래머스 데브코스 진행하며 발표 했던 내용에 페이지네이션 보완하기 위해 작성하게 되었다.xxToMany에서의 주의점과 Pagination
사용자가 어떤 게시글을 작성하면 조건에 맞는 다른 사용자에게 쪽지같은 알림을 구현해야 하는 상황게시글 작성알림처음에는 하나의 transaction으로 처리로 구현을 진행했으나 알림 기능은 부가적인 기능이고 댓글 작성 기능에 영향을 주면 안된다고 생각이 들었다. 따라서
Spring Data JPA 사용하는 미션에서 멘토님께 리뷰를 받으며 다음과 같은 피드백을 받으며 슬라이스 테스트 존재에 대해 알게 되었다.Repository Test시 @SpringBootTest를 @DataJpaTest로 변경해서 테스트 작성하기슬라이스 테스트란 무
Java 버전별 특징들을 찾아보면서 좋은 글이 있어 해당 글을 정리한 포스팅입니다.최신 Java 버전은 이제 6개월마다 따른다. 수많은 새로운 버전이 출시됨에 따라 기본적으로 다음과 같은 사용 시나리오가 존재기업의 기존 프로젝트에서는 Java 8을 사용해야 하는 경우가
인스턴스를 오직 하나만 생성할 수 있는 클래스를 말한다.ex) 함수와 같은 무상태 객체, 설계상 유일해야 하는 시스템 컴포넌트클래스를 싱글턴으로 만들면 이를 사용하는 클라이언트를 테스트하기가 어려워질 수 있다.타입을 인터페이스로 정의한 다음 해당 인터페이스를 구현해서
선택적 매개변수가 많을 때 적절히 대응하기 어려움ex) 영양정보를 표현하는 클래스필수 항목: 1회 내용량, n회 제공량, 1회 제공량당 칼로리선택 항목: 총 지방, 트랜스지방, 콜레스테롤, 나트륨 등 20가지 이상대다수 제품은 선택 항목 중 대다수의 값이 0이런 클래스