지금까지 로그 추적기를 분석해보자

로그 추적기를 분석해볼때 핵심 기능과 부가 기능으로 나뉜다.

image.png

그런데 코드를 보면 부가 기능이 더 크다.

디자인 패턴을 이용해서 따로 나누어 보자

템플릿 메서드 패턴

image.png

템플릿 메서드 패턴이다

우선 추상 클래스 하나를 만들고 execute로 해당 부가 기능 로직을 수행한다

중간에 바뀌는 부분인 핵심 부분은 call로 execute가 호출하게 한다

그리고 핵심 부분을 오버라이딩하여 바뀔 수 있도록한다

그러면 오버라이딩한 인스턴스를 실행하면 된다!

전략 패턴

그런데 지금 상속을 받아서 자식 클래스가 핵심 부분인 call만 바라보는게아니라 부가기능인 call 까지 즉 부모 클래스까지 바라보고 있다

사용하지도 않는데 바라보고 있다 이를 분리할 수 있는 전략 패턴을 이용해 보자

image.png