본문 바로가기

CS 잡지식

Strategy Pattern - Field Injection, Parameter Injection

후~~~ 좋은 설계란 참 어렵네요 ㅠㅠ

의존 관계를 설계할 때에 크게 2가지의 패턴이 있는 것 같다.

1. 선 조립, 후 실행 : 스프링은 DI에 의해 선 조립을 하고, 실행을 한다.

-> 필드에 외존 관계를 주입시킨다. 

2. 실행할 때마다 매개변수로 의존 관계에 있는 객체를 전달하여 실행하는 패턴!

-> Strategy Pattern도 필드에 의존 관계의 객체를 주입시키는 방법 이외에도,  매개변수로 전달을 해서 의존 관계를 설정하는 경우가 있다.  

 

각각의 장단점

1.필드 주입 전략

a) 선 조립, 후 실행 방법에 적합하다.

b) Context 를 실행하는 시점에는 이미 조립이 끝났기 때문에 전략을 신경쓰지 않고 단순히 실행만 하면 된다.

2. 매개 변수로 전달

a) 실행할 때 마다 전략을 유연하게 변경할 수 있다.

b) 단점 역시 실행할 때 마다 전략을 계속 지정해주어야 한다는 점이다.

 

어떤 방식이 조금 더 나아 보이는가?

변하는 부분과 변하지 않는 부분을 분리하는 템플릿의 경우에는 어떤 방식이 더 좋을까???

-> 1,2 방식 모두 문제를 해결할 수는 있지만, 지금 우리가 원하는 것은 애플리케이션 의존 관계를 설정하는 것처럼 선 조립

후, 실행이 아니다.

단순히 코드를 실행할 때, 변하지 않는 템플릿이 있고, 그 템플릿 안에서 원하는 부분만 살짝 다른 코드를 실행하고 싶을 뿐

이다. 

이러한 경우에는, Strategy가 변경될 마다, 매개 변수만 넘겨 주는 되는 2번째 방식이 더 좋다.