일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- JPA
- DI
- 스프링 부트
- 싱글톤
- 스프링 컨테이너
- @Configuration
- Effective Java
- java
- mybatis
- thymeleaf
- spring
- 스프링 프레임워크
- jdbc
- assertThat
- db
- 스프링 부트 입문
- kafka
- Javascript
- 생성자 주입
- assertThrows
- SQL
- sqld
- 스프링부트
- 스프링
- DIP
- springboot
- 필드 주입
- 스프링 부트 기본
- resultMap
- 스프링 빈
- Today
- Total
목록분류 전체보기 (292)
선 조치 후 분석
브릿지 (Bridge) 패턴 추상적인 것과 구체적인 것을 분리하여 연결하는 패턴 브릿지 패턴의 중점은 '기능 클래스 계층'과 '구현 클래스 계층'의 분리 기능 클래스 : 기본 기능을 가진 부모 클래스를 상속받아 새로운 기능이 추가된 하위 클래스 (상속) 구현 클래스 : 기능을 정의한 추상 클래스 (또는 인터페이스)의 기능을 구현한 하위 클래스 기능과 구현 클래스 계층이 뭉쳐있으면 새로운 기능이 추가될수록 계층구조가 무거워지고 이로 인해, 1개의 클래스에는 권한이 너무 커지고 의존도가 높아지는 문제가 발생한다. 이러한 문제를 해결하기 위해 2가지 계층으로 분리해서 관리하고 연결하기 위한 패턴이 브릿지 패턴이다. 조금 이해가 잘 될 수 있도록 두 가지로 나눠서 생각해 보겠습니다. 1. 새로운 기능을 추가하고..
상속(Inheritance) 클래스 상속을 통해 자식 클래스는 부모 클래스의 자원을 물려받게 되며, 부모 클래스와 다른 부분만 추가하거나 재정의함으로써 기존 코드를 쉽게 확장할 수 있다. 부모 클래스의 내부 구현에 대해 상세하게 알아야 하기 때문에 자식 클래스와 부모 클래스 사이의 결합도가 높다. 상속 관계는 컴파일 단계에서 결정되고 고정되기 때문에 코드를 실행하는 도중에 변경할 수 없다. Is-a 관계 public class Person { // 상속 개념 public void work() { System.out.println("걷다"); } public void talk() { System.out.println("말하다"); } } public class Developer extends Person{..

어댑터 패턴 - Adapter Pattern 서로 다른 인터페이스를 사용할 수 있도록 바꿔줌으로써 기존 코드를 재사용한다. 기존 코드를 클라이언트가 사용하는 인터페이스의 구현체로 바꿔주는 패턴 클라이언트가 사용하는 인터페이스를 따르지 않는 기준 코드를 재사용할 수 있게 해 준다. 어댑터 패턴은 일상에서도 쉽게 접할 수 있다. 예를 들어, 220V 코드를 110V 콘센트에 꽂을 때 돼지코라고 불리는 어댑터를 이용하여 110V 콘센트를 이용할 수 있게 도와주는 방법과 유사하다. 어댑터 (Adapter) 구현 방법 써드파티에서 제공되는 클래스 거나, 레거시 코드를 사용하여 새로운 코드를 짤 때, 사용할 수 있다. 즉, 기존의 코드를 건드리지 않고 나의 코드(Adaptee)와 융합한 클래스(Adapter)를 구..
ProtoType - 프로토타입 기존 인스턴스를 복제해서 새로운 인스턴스를 만드는 패턴 일반적으로 기존 인스턴스를 응용해서 새로운 인스턴스를 생성할 때 유용하게 사용 인스턴스를 생성할 때마다 DB를 거쳐서 인스턴스를 생성한다면 많은 자원을 소모할 것이다. 대신에 기존 인스턴스를 복제해 원하는 값만 변경해서 사용한다면 자원의 소모를 줄일 수 있다. Java가 제공하는 clone()을 사용해서 간단하게 구현 가능 프로토타입 패턴 적용 전 이름과 국적을 가지고 있는 선수 클래스 그리고 DB를 통해서 데이터를 가지고 오는 메소드가 있다 @Data @AllArgsConstructor @NoArgsConstructor public class Player { private String name; private Str..
얕은 복사(Shallow Copy) 실제 값이 아닌, 값을 가리키는 '주소'를 복사해 같은 객체를 가리키는 것을 뜻 한다. 원본 객체에 대해서 새로운 객체를 만들고 원본 객체를 참조한다. call-by-reference와 유사한 개념 아래와 같이 Person 클래스가 있다. @Data @AllArgsConstructor @NoArgsConstructor public class Person { private String name; private int age; } 해당 클래스를 통해 인스턴스를 만들었고 아래와 같이 복사했다. public class CopyTest { @Test void copyTest1() { Person person = new Person("Ramos", 33); Person copyP..
빌더 (Builder) 패턴 빌더 패턴 구현의 요점은 메소드 체이닝 메소드 체이닝으로 엔티티의 데이터를 세팅해 주는 빌더라는 인터페이스를 만들어 준 후 계속 스스로 반환하고, 마지막에 해당 객체를 반환하는 것이다 생성자와 깊은 연관이 있다 동일한 프로세스를 거쳐 다양한 구성의 인스턴스를 만드는 방법 빌더 (Builder) 패턴이 필요한 경우 @Data @AllArgsConstructor @NoArgsConstructor public class TourPlan { private String title; private int nights; private int days; private LocalDate startDate; private String whereToStay; private List plans =..