[22.08.07] Daily 회고록 (스프린트 회의, 전략(Strategy) 패턴)
일간 회고록(TIL)

[22.08.07] Daily 회고록 (스프린트 회의, 전략(Strategy) 패턴)

[일일회고]

이번 주말에는 고등학교 친구들과 대부도에 다녀오면서 프로젝트에 지장이 가지 않도록 목요일에 작업을 해두고 다녀왔다. 물놀이를 하였는데 시작한지 10분? 정도 됐을 때 바로 벌에 눈을 쏘이는 바람에 별로 놀지 못했다.. 꿀벌은 아니였는데 반나절 정도 지나니 괜찮아졌다. 뒤늦게 군대에 가는 친구와 휴가나온 친구를 만나는 겸해서 시간을 냈고, 다음 주에는 군대 후임과 함께 군대 시절 지냈던 반의 하사님과 주무관님을 봴 예정이고, 대학교 친구들과 물놀이 예정(아직까지 일정 안잡힘)이다. 8월 말에 일정이 중간 발표가 있어서 그전에 충분히 여가생활을 보내려고 한다.

 

[프로젝트]

[소마]

- 이번 주가 끝나서 스프린트 회의를 진행했다. 2주 전까지 완성하기로했던 출제파트가 아직 끝나질 않아서 일단 디자인 외주를 맡기기로 한 것을 중간 발표 후로 미루기로 했다. 내가 맡은 배포파트의 api 설계는 거의 끝나가서 다음 주에는 외부 브로커를 이용한 웹소켓 방 설계에 아마 치중하지 않을까 싶다. 프로젝트의 스프린트를 원하는 일정에 맞추고 싶은데 모두가 내가 원하는 일정에 따라오긴 힘들구나 싶고, 팀장을 여러번 진행해봤지만 할 때마다 팀장은 참 어려운 것 같다. 소마 일정이 3개월 반 정도 남았는데 앞으로 잘 버틸 수 있었으면 좋겠다.

 

[개인공부]

인프런 스프링 고급편 - 전략 패턴

- 템플릿 메서드 패턴은 부모 클래스에서 변하지 않는 템플릿을 두고, 변하는 부분을 자식 클래스에 두어서 상속을 사용해 문제 해결을 하던 반면, 전략 패턴은 변하지 않는 부분을  Context, 변하는 부분을 Strategy라는 인터페이스를 만들고 해당 인터페이스를 구현하도록 해서 문제 해결. 상속이 아닌 위임

해당 패턴을 사용하면 알고리즘을 사용하는 클라이언트와 독립적으로 알고리즘 변경 가능.

인터페이스에만 의존하기 때문 -> 스프링에서 사용하던 의존관계 주입 패턴

 

- 선 조립 후 실행 방식

Context와 Strategy를 실행 전에 원하는 모양으로 조립해두고, 그 다음에 Context를 실행하는 방식

장점은 실행하는 시점에 이미 조립이 끝났기 때문에 전략을 신경쓰지 않고 실행만 하면 된다.

단점은 Context와 Strategy을 조립한 이후에는 전략을 변경하기 번거롭다.

Context에서 setter를 제공하면 되긴하지만, 싱글톤으로 사용할 때는 동시성 이슈 등 고려할 점이 많다.

- 실행할 때마다 전략 주입

파라미터에 전략을 전달받는 방식

실행할 때마다 전략을 유연하게 변경 가능하나 실행할 떄마다 전략을 계속 지정해주어야 한다.

반복되지 않는 코드 일부를 전달하는 것이 고민하던 문제이므로 더 적합한 것은 실행할 때마다 전략을 주입하는 패턴이다.