오늘 Java Stream에 대해 조금 더 이해하게 되었습니다. Stream은 변하지 않는 템플릿 코드를 추상화된 연산으로 제공하고 (map, filter, etc) 변하는 코드는 동작 파라미터화를 통해 콜백으로 전달하는 구조를 가집니다. 변하는 것과 변하지 않는 것을 잘 구분한 좋은 설계 표본 같습니다.
또한 Stream은 함께 변경되는 것과 따로 변경되는 것을 잘 구분한 좋은 설계 표본같습니다. for 문을 통해 구현한 코드를 상상해 봅니다. map과 관련된 기능 filter와 관련된 기능 모두 함께 뒤섞여 있을 것입니다. 변한다는 면에서 같지만 다르게 변경되는 것들을 잘 분리해낸 것 같습니다.