일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Connection Pool
- 디자인 패턴
- Spring Boot
- 데이터베이스
- FCM
- @MockBean
- 플라이웨이트
- Service Locator
- Service Locator 패턴
- @ControllerAdvice
- NotEmpty
- JPA
- @Valid
- java
- restTemplate
- Effetive Java
- NotBlank
- Web
- 이펙티브 자바
- SQL 삽입 공격
- multi module
- 트랜잭션
- db
- Effective Java
- deleteById
- Item04
- Firebase
- @SpyBean
- Proxy Patter
- springboot
- Today
- Total
목록Design Pattern (7)
NoTimeForDawdling
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cUnnRp/btq72iGpDKX/k2u7CSAqMkE30r5cZEQSXk/img.png)
어댑터 패턴이란? 어댑터 패턴은 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있도록 도와주는 패턴이다. 즉, 어댑터를 이용해 한 클래스의 인터페이스를 클라이언트에서 사용하고자 하는 다른 인터페이스로 변환시켜 호환성 문제를 해결한다. 예를 들어, 갤럭시 핸드폰을 충전해야 하는데 현재 아이폰 충전기밖에 없다면 어댑터를 사용해서 아이폰 충전기로도 갤럭시 핸드폰을 충전할 수 있다. 여기서의 어댑터는 핸드폰을 충전할 때 필요한 인터페이스를 각각의 타입이 필요로 하는 인터페이스로 바꿔준다고 할 수 있다. 코드 예제 현재 GalaxyPhone을 사용하고 있다고 가정해보자. 핸드폰을 충전하기 위해 charging()메서드를 호출하는데, 이 처리는 PhoneCharger인터페이스를 구현한 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bhHF6T/btq64Saao66/4e91cmDExRru9KKxzQW2b0/img.png)
프록시 패턴(Proxy Patter) 이란? 어떤 객체를 사용하고자 할 때, 객체를 직접적으로 참조하는 것이 아니라, 그 객체를 대행(대리, proxy)하는 객체를 통해 대상 객체에 접근하는 방식을 말한다. 즉, 실제 기능을 수행하는 객체(Real Object)대신 가상의 객체(Proxy Object)를 사용해 로직의 흐름을 제어하는 디자인 패턴이다. 프록시 패턴 특징 및 장점 실제 대상 객체가 메모리에 존재하지 않아도 기본적인 정보를 참조하거나 설정할 수 있다. 실제 객체의 기능이 반드시 필요한 시점까지 객체의 생성을 미룰 수 있다. 프록시 객체와 실제 객체는 같은 인터페이스를 구현하여 프록시 객체는 실제 객체와 치환이 가능하다. 사용자 입장에서는 프록시 객체와 실제 객체의 사용법이 유사하므로 사용성이..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/L2iWm/btq6uIzIbGo/kmLnKzVRBCghrjtXJiH5k1/img.png)
상태 패턴이란? 상태 패턴은 한 객체에게 여러 개의 상태(State)가 존재하고, 상태간에 긴밀한 연결성이 있을 경우 상태간의 전이를 용이하게 해주는 패턴이다. 상태 패턴에서 객체는 최초의 상태객체를 입력받고, 외부 입력에 따라 다른 상태객체로 변경되는데, 이때 두 번째 상태객체는 첫 번째 상태객체가 생성한다. 전략패턴이 여러 개의 전략객체를 상황에 따라 주체객체에 직접 연결하는 것과 달리, 상태 패턴에서는 상태객체가 다음 상태객체를 생성하고, 현재 상태객체로 설정한다. 예를 들어 핸드폰에 세가지 상태가 있다고 가정해보자. 전원 OFF 전원 ON, 화면 ON 전원 ON, 화면 OFF 핸드폰에 전원 버튼이 있는데 이걸 누를 때 다음과 같은 상태의 변이가 일어나게 된다. 전원이 OFF일 때 전원 버튼을 누르..
플라이웨이트 패턴이란? 플라이웨이트 패턴은 구조 패턴 중 하나로, 많은 수의 객체를 생성해야 할 때 사용하는 패턴입니다. 플라이웨이트 패턴을 사용하면 객체의 내부에서 참조하는 객체를 직접 만드는 것이 아니라, 없다면 만들고, 만들어져 있다면 객체를 공유하는 식으로 객체를 구성합니다. 보통 팩토리 메서드 패턴을 사용해 객체(FlyweightFlyweight 객체)를 생성하며, 이때 생성하는 객체가 내부적으로 참조하는 객체에 대해, 기존에 있는 객체를 참조만 하는 식으로 객체를 구성하기 때문에 객체의 할당에 사용되는 메모리를 줄일 수 있을 뿐 아니라, 객체를 생성하는 시간도 들지 않게 됩니다. 플라이웨이트 패턴을 언제 적용하면 좋을까? 플라이웨이트 패턴은 다음과 같은 상황이 많을수록 적용하기에 적합합니다. ..
Service Locator 패턴이란? Service Locator는 의존성을 해결할 객체들을 보관하는 일종의 저장소입니다. 외부에서 객체에게 의존성을 전달하는 주입과 달리 Service Locator에게 직접 의존성을 해결해줄 것을 요청합니다. 영화 예매 코드 예제 ServiceLocator.class public class ServiceLocator{ private static ServiceLocator saleInstance = new ServiceLocator(); private DiscountPolicy discountPolicy; public static DiscountPolicy discountPolicy() { //인스턴스를 반환하기 위한 메서드 return saleInstance.disc..
싱글턴 패턴이란? 전역 변수를 사용하지 않고 객체를 하나만 생성하도록 하여, 생성된 객체를 어디에서든지 참조할 수 있도록 하는 디자인 패턴입니다. Singleton class는 하나의 인스턴스만을 생성하는 책임이 있으며 getInstance() 같은 메서드를 통해 모든 클라이언트에게 동일한 인스턴스를 반환하는 작업을 수행합니다. 싱글턴 패턴의 필요성 싱글턴 패턴은 오직 하나의 인스턴스만 생성하기 때문에 메모리 낭비를 방지할 수 있습니다. 그리고 여러 스레드가 동시에 해당 인스턴스를 공유하여 사용하게끔 할 수 있으므로, 요청이 많은 곳에서 사용하면 효율을 높일 수 있습니다. 싱글턴 만드는 방법 (Java 8) 1. public static final 방식 public class Singleton { pub..
전략 패턴(Strategy Pattern)이란? 전략 패턴이란 객체들이 할 수 있는 행위 각각에 대해 전략 클래스를 생성하고, 유사한 행위들을 캡슐화하는 인터페이스를 정의하여 객체의 행위를 동적으로 바꾸고 싶은 경우 직접 행위를 수정하지 않고 전략을 바꿔주기만 함으로써 행위를 유연하게 확장하는 방법입니다. 즉, 객체가 할 수 있는 행위들 각각을 전략으로 만들어 놓고, 동적으로 행위의 수정이 필요한 경우 전략을 바꾸는 것만으로도 행위의 수정이 가능하도록 만든 패턴이라고 볼 수 있습니다. 전략 패턴 예제(계산기) 계산을 하는 방식은 +, -, *, / 총 4가지 방식이 있습니다. 유사한 행위들을 캡슐화하는 인터페이스를 정의하겠습니다. public interface OperationStrategy { int ..