Q.
전략패턴을 왜 사용하는지, 콜백/템플릿 패턴이 뭔지 몰랐는데 알아서 좋았다.
A.
- 전략은 다른 말로 알고리즘. 코드 문맥 중 특정한 알고리즘을 쓰는 파트를 컨텍스트 안에서 내장시키지 않고, 외부에서 받아와서 쓰는 것. 그로써 알고리즘을 통째로 바꿔칠 수 있다.
- 메소드 파라미터로 넣는 마이크로 DI도 가능하다.
Q.
콜백/템플릿과 전략패턴은 어떤 차이가 있을까?
A.
- (개인적으로 찾아봄) 템플릿 콜백 패턴은 전략 패턴과 모든 것이 동일하나 전략을 익명 내부 클래스/람다로 정의해서 사용하는 것이 차이이다.
(토비) 템플릿 콜백 패턴은 전략패턴이다!
- 전략은 수많은 메소드를 가질 수 있다. 추상클래스/인터페이스 구현이 필요하다.
- 그중 인터페이스 메소드가 딱 하나 존재하는 전략 클래스를 사용하는 전략패턴을 템플릿/콜백이라고 부르게 된 것 이다.
- 이는 함수형 프로그래밍의 고차함수?와 비슷하다. 인터페이스 메소드가 단 하나뿐인 전략을 사용하는 것. 의외로 사용 용도가 많다.
Q.
람다 식은 객체인가?
A.
- 자바 8에서 람다식이 나온다. 펑셔널 인터페이스를 함수처럼 취급가능해졌다.
- 내부적으론 펑셔널 인터페이스를 구현한 인스턴스라고 말한다.