후~~~ 좋은 설계란 참 어렵네요 ㅠㅠ
의존 관계를 설계할 때에 크게 2가지의 패턴이 있는 것 같다.
1. 선 조립, 후 실행 : 스프링은 DI에 의해 선 조립을 하고, 실행을 한다.
-> 필드에 외존 관계를 주입시킨다.
2. 실행할 때마다 매개변수로 의존 관계에 있는 객체를 전달하여 실행하는 패턴!
-> Strategy Pattern도 필드에 의존 관계의 객체를 주입시키는 방법 이외에도, 매개변수로 전달을 해서 의존 관계를 설정하는 경우가 있다.
각각의 장단점
1.필드 주입 전략
a) 선 조립, 후 실행 방법에 적합하다.
b) Context 를 실행하는 시점에는 이미 조립이 끝났기 때문에 전략을 신경쓰지 않고 단순히 실행만 하면 된다.
2. 매개 변수로 전달
a) 실행할 때 마다 전략을 유연하게 변경할 수 있다.
b) 단점 역시 실행할 때 마다 전략을 계속 지정해주어야 한다는 점이다.
어떤 방식이 조금 더 나아 보이는가?
변하는 부분과 변하지 않는 부분을 분리하는 템플릿의 경우에는 어떤 방식이 더 좋을까???
-> 1,2 방식 모두 문제를 해결할 수는 있지만, 지금 우리가 원하는 것은 애플리케이션 의존 관계를 설정하는 것처럼 선 조립
후, 실행이 아니다.
단순히 코드를 실행할 때, 변하지 않는 템플릿이 있고, 그 템플릿 안에서 원하는 부분만 살짝 다른 코드를 실행하고 싶을 뿐
이다.
이러한 경우에는, Strategy가 변경될 마다, 매개 변수만 넘겨 주는 되는 2번째 방식이 더 좋다.
'CS 잡지식' 카테고리의 다른 글
스프링 Bean의 등록 방법 (0) | 2023.02.22 |
---|---|
콜백(Call Back) (0) | 2023.02.21 |
Sub Class vs Interface implementation Class (0) | 2023.02.20 |
템플릿 메서드 패턴의 단점을 극복하자 - Strategy Pattern (0) | 2023.02.20 |
상속(Inheritance)의 단점 ( 템플릿 메서드의 단점 ) (0) | 2023.02.20 |