일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- sqld
- 생성자 주입
- db
- 스프링 부트 입문
- thymeleaf
- 스프링 컨테이너
- resultMap
- mybatis
- spring
- 싱글톤
- DIP
- DI
- assertThrows
- 스프링부트
- @Configuration
- Effective Java
- springboot
- 스프링
- assertThat
- SQL
- 스프링 부트 기본
- 스프링 빈
- 필드 주입
- 스프링 부트
- jdbc
- 스프링 프레임워크
- Javascript
- java
- JPA
- kafka
- Today
- Total
목록Language (90)
선 조치 후 분석

Decorator 패턴기존 코드를 변경하지 않고 부가기능을 추가하는 패턴객체의 결합을 통해 기능을 동적으로 유연하게 확장할 수 있게 해주는 패턴동적으로 유연하다는 것은 '런타임 시에 부가기능을 추가'가 가능하다는 것결합이란 상속이 아닌 위임 (혹은 합성) 즉, Has-a 관계를 가지는 패턴임을 의미Decorator 객체를 조합함으로써 추가 기능의 조합을 설계하는 패턴 Composite 패턴처럼 최상위에 Component 역할을 하는 인터페이스가 존재한다.이 인터페이스는 ConcreateComponent와 Decorator가 둘 다 구현을 한 인터페이스다. Composite 패턴과 유사하지만 차이점은 Decorator가 여러 개의 Decorator를 가지고 있는 게 아니라 하나의 Component 타입의 ..

Composite 패턴 전체 계층 구조와 전체를 구성하는 부분 계층 구조를 클라이언트 입장에서 동일하게 바라볼 수 있도록 구성하는 패턴 클라이언트에서 개별 객체와 다른 객체들로 구성된 복합 객체 (Composite)를 똑같은 방법으로 다룰 수 있다. 클라이언트 입장에서는 '전체' 나 '부분'이나 모두 동일한 컴포넌트로 인식할 수 있는 계층 구조를 만든다. 트리 구조에 종속적 Composite 패턴 구현 방법 클라이언트는 Component 인터페이스에서 정의한 메서드만을 사용하도록 한다 개발자가 생성할 객체들은 Leaf 혹은 Composite 타입으로 구현 Leaf는 가장 Primitive 한 타입이고 Composite은 Primitive 한 타입들을 그룹으로 가지고 있는 객체 따라서 Composite은 ..
브릿지 (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..