본문 바로가기
IT/Java

전략 패턴 예제(Strategy Pattern)

by 성준하이 2024. 10. 25.
반응형

이전 포스팅에서 템플릿 메서드 패턴에 대해서 다룬 포스팅이 있다.

이번 포스팅을 읽기 전에 템플릿 메서드 패턴에 대해서 먼저 보고 오는 것을 추천한다.

 

참고 포스팅에 이어서 

코드를 변하는 부분과 변하지 않는 부분으로 나눠야 하는데,

템플릿 메서드 패턴은 추상 클래스를 상속 받게 되어

부모의 클래스가 변경이 된다면 자식 클래스도 변경이 불가피 한 상황이 된다.

 

이럴 경우에 좀 더 나은 코드로 변화하기 위해서 전략 패턴이 생겼다.

 

바로 예제 코드로 알아보면,

 

  • 우선 실행할 메서드를 갖고있는 인터페이스를 하나 만들어준다.
public interface Strategy {
     void call();
}
  • 그리고 공통 로직을 담을 일반 클래스를 하나 만들어준다.
@Slf4j
public class StrategyContext {

     public void execute(Strategy strategy) {

          log.info("서비스 실행");
          //business logic start
          strategy.call();
          //business logic end
          // 현재 시간 DB 저장
          log.info("서비스 종료");
     }
}
  • 그리고 사용시 만든 클래스를 호출해주면 된다.
void strategy() {
     StrategyContext context = new StrategyContext();

     context.execute(new Strategy() {
          @Override
          public void call() {
               log.info("business logic1 start");
          }
     });

}

참고 포스팅

https://thenicesj.tistory.com/1095

 

템플릿 메서드 패턴 예제(Template Method Pattern)

디자인 패턴에 대해서 예제를 적어두고자 포스팅한다. 프로그래밍 코드를 짤 때 변하는 부분과 변하지 않는 부분을 구분해서 개발을 해야한다. 실제로 개발을 진행하다보면 작게는 로그 찍는

thenicesj.tistory.com

 

반응형

댓글