본문 바로가기

전체 글34

Director Builder Pattern (디렉터 빌더 패턴) 이 글에 주된 주제는 GoF의 디자인 패턴에서 정의하고 있는 디렉터 빌더 패턴입니다. 그러나 이펙티브 자바의 Simple Builder Pattern도 존재하기에 공부를 위해 일부를 다루고 있습니다. Director Builder Pattern (디렉터 빌더 패턴) 이란? 복잡한 객체들을 동일한 프로세스를 통해 단계별로 다양하게 생성할 수 있도록 하는 생성 디자인 패턴이다. Builder: 빌더 인터페이스는 제품 즉, 인스턴스를 생성할 때 필요한 단계들을 선언한다. ConcreateBuilderA: 빌더 인터페이스의 구현체다. 제품(Product) 생성에 필요한 단계들을 구현하며, 인터페이스를 따르지 않는 제품을 생산할 수도 있다. Product: ConcreateBuilder를 통해 생성된 제품이다. .. 2023. 9. 4.
Abstract Factory Pattern (추상 팩토리 패턴) Abstract Factory Pattern (추상 팩토리 패턴) 이란? 관련 있는 여러 인스턴스를 만들어주는 팩토리를 구체적인 클래스에 의존하지 않고 만들 수 있게 해주는 생성패턴이다. 즉, 구체적인 구현에는 의존하지 않고 인터페이스에 주목하여, 인터페이스만을 사용해서 부품을 조립하고 제품으로 완성하는 패턴이다. AbstractFactory: 추상적인 공장이다. 추상적인 공장에서는 추상적인 제품을 생산한다. ProductA, ProductB: 추상적인 제품이다. ConcreateFactory: 추상적인 공장의 구현체다. 즉, 구체적인 공장이다. 구체적인 제품을 생산한다. ConcreateProductA, ConcreateProductB: 추상적인 제품의 구현체이다. 즉, 구체적인 제품이다. Client.. 2023. 8. 24.
Factory Method Pattern (팩토리 메서드 패턴) 해당 글은 Java 8에 default 메서드가 추가된 이후 interface를 사용해 팩토리 메서드를 구현하는 것을 기준으로 작성된 글입니다. Factory Method Pattern(팩토리 메서드 패턴) 이란? 팩토리 패턴은 구체적인 인스턴스에 대한 구현을 서브 클래스가 정하는 패턴이다. 즉, 부모클래스에서 객체들을 생성할 수 있는 뼈대(interface)를 제공하고, 자식 클래스들이 생성될 객체의 유형을 결정할 수 있도록 하는 생성 패턴이다. Creator: 뼈대 즉, interface를 제공하는 최상위 팩토리 인터페이스다. 서브 클래스들에게 구현을 위임한다. templateMethod(): 객체 생성에 관한 전처리, 후처리를 템플릿화 한 메서드(공통 작업 처리) createProduct(): 서브.. 2023. 8. 9.
Singleton Pattern (싱글톤 패턴) Singleton Patter(싱글톤 패턴)이란? 싱글톤 패턴은 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴이다. 장점 하나의 인스턴스를 기반으로 해당 인스턴스를 다른 모듈들이 공유하여 사용하기 때문에 인스턴스를 생성할 때 드는 비용이 줄어든다. 그렇기 때문에 인스턴스 생성에 많은 비용이 드는 I/O 바운드 작업에 많이 사용된다. ※ I/O 바운드: 디스크 연결, 네트워크 통신, 데이터베이스 연결 ex) 데이터베이스 연결 데이터베이스에 query문을 전달하기 위해서는 디비와 connect를 해야한다. 하지만 요청 시 매번 connect 인스턴스를 생성한다면 높은 비용이 발생한다. 이때 싱글톤 패턴을 사용한다면 connect 인스턴스를 단 한 번만 생성하여 다른 모듈과 공유하는 형태로 사용함으로써 .. 2023. 7. 31.
Instagram Api Refresh Token batch 리펙토링 개발도중 Instagram API를 사용해야 할 일이 있었다. 해당 API를 사용하기 위해서는 Token을 발급받아 사용해야 하는데 토큰에 기한이 60일이라 주기적으로 새 토큰을 발급받아야 했다. 그래서 해당 기능을 하는 batch 서비스를 하나 만들게 되었고, 정말 짧은 코드지만 해당 코드를 리펙토링 하는 과정을 메모해 둔다. 초기 작성 코드 @Service public class TokenService { // 선언부 생략... public void callInstaRefreshTokenApi(){ TokenVO.Request tokenRequestData = this.getAccessToken(); webClientUtil.getBaseUrl(properties.getInstagramApiOptio.. 2023. 6. 24.
JRebel이 안될때 확인해 볼 사항들 JRebel을 잘 사용하던 도중 가끔 안될때가 있다. 여러가지 원인들이 있는데 하나씩 문제가 생길때마다 정리해놓고 기억하기위해 글을 작성한다. rebel.xml 파일 생성확인JRebel 사용시 rebel.xml 파일이 생성되어있어야 한다. rebel.xml은 어느 파일을 핫스왑 해줄지 설정 정보가 적혀있는 파일이다. 아래의 이미지처럼 왼쪽의 체크박스를 클릭시 자동으로 rebel.xml 파일이 생성된다.다만 가끔 생성이 안될때가 있는것 같다. 그럴때는 체크박스를 해체했다가 다시 체크해주도록 하자. 이렇게 해도 생성이 안된다면 다른 문제가 있거나 직접 작성해서 사용해보자. 2023. 6. 21.