본문 바로가기

디자인 패턴

(22)
Template Method 패턴 상위 클래스에서 로직의 흐름을 정의, 하위 클래스에서 흐름에 쓰이는 method를 구현하는 패턴 1. 코드 AbstractDisplay : 로직의 흐름을 기술한 상위 클래스 public abstract class AbstractDisplay { public abstract void open(); public abstract void print(); public abstract void close(); public final void display() { open(); for (int i = 0; i
Adapter 패턴 두 클래스가 서로 동일한 기능을 하지만 규격이 다를 경우 두 클래스의 규격을 맞춰주는 adapter을 만들어주는 패턴 a_v1 adapter a_v2 1. 코드 MyClass : Properties 클래스의 규격을 맞춰주는 adpator 역할 public class MyClass extends Properties { public void readFromFile(String filename) throws IOException { File file = new File(filename); super.load(new FileInputStream(file)); } public void writeToFile(String filename) throws IOException { File file = new File(f..
iterator 패턴 반복하는 로직을 for문이 아닌 method를 이용해 구현하는 패턴 1. 예제 코드 MyClass : 반복을 돌려야하는 class public class MyClass { private List sentents; public List getSentents() {return sentents;} public void setSentents(List sentents) {this.sentents = sentents;} public String getSentent(int idx) {return sentents.get(idx);} public void appned(String str) { if (sentents == null) { sentents = new ArrayList(); } sentents.add(str);..
Circuit breaker 패턴 - 3) spring을 이용한 Circuit breaker 1) 시나리오 A서버에서 B서버에 http call A서버 -> circuit breaker -> B서버 전체 소스 : https://github.com/qwer9412/circuit_breaker_test 2) pom.xml에 dependency 추가 1.8 Hoxton.SR3 org.springframework.cloud spring-cloud-starter-netflix-hystrix org.springframework.cloud spring-cloud-dependencies ${spring-cloud.version} pom import spring-cloud-starter-hystrix 라이브러리 추가 properties에 버전과 dependencyManagement가 없으면 아래와 같은 오류 발..
Circuit Breaker 패턴 - 2) 넷플릭스의 Hystrix 라이브러리 사용하기 1) 시나리오 A서버에서 B서버에 http call A서버 -> circuit breaker -> B서버 전체 소스 : https://github.com/qwer9412/circuit_breaker_test 2) pom.xml에 dependency 추가 com.netflix.hystrix hystrix-core 1.5.18 io.reactivex.rxjava2 rxjava 3) circuit breaker (GetACircuitBreaker) 코드 public class GetACircuitBreaker extends HystrixCommand{ protected GetACircuitBreaker(HystrixCommandGroupKey group) { super(group); } @Override //..
Circuit breaker 패턴 - 1) Circuit breaker란 1) MSA(마이크로소프트 서비스 아키텍처) 패턴의 한계 MSA패턴은 시스템을 여러 서비스 컴포넌트로 나누고 각 컴포넌트끼리 서로 호출을 하는 패턴이다. 아래의 그림 1이 MSA패턴의 모습이다. 이 패턴의 한계는 서버가 서로 종속적이라는 점이다. 즉, server A가 server B을 호출을 했을 때 server B가 응답을 못하거나 응답 시간이 길어진다면 server A는 응답을 계속 기다리게 되는 한계가 있다. 이러한 한계를 극복한 것이 Circuit breaker 패턴이다. 2) Circuit breaker 패턴이란 Circuit breaker 패턴은 그림 1에서 server A와 server B사이에 circuit breaker를 두는 것이다. 아래의 그림2가 Circuit breaker 패턴의..