- ์คํธ๋ฆผ Gatherers๋
filter(),map()๊ณผ ๊ฐ์ ์๋ฐ ์คํธ๋ฆผ์ ์ค๊ฐ ์ฐ์ฐ์๋ฅผ ์ง์ ์์ฑํ์ฌ ์ฌ์ฉ์ ์ ์ ๋ก์ง์ ๊ตฌํํ ์ ์๊ฒ ํฉ๋๋ค. ๐ ๏ธ - ์คํธ๋ฆผ ์ฐ์ฐ์๋ ์ด์ ์์์ ์ํ๋ฅผ ๊ธฐ์ตํ ํ์ ์๋ '๋ฌด์ํ(Stateless)' ์ฐ์ฐ์(์:
map,filter)์ ์ด์ ์์์ ์ ๋ณด๋ฅผ ํ์๋ก ํ๋ '์ํ ์ ์ฅ(Stateful)' ์ฐ์ฐ์(์:distinct,sorted)๋ก ๋ถ๋ฅ๋ฉ๋๋ค. ๐ง - Gatherers๋ ๋ฌด์ํ ๋ฐ ์ํ ์ ์ฅ ์ค๊ฐ ์ฐ์ฐ์ ๋ชจ๋๋ฅผ ์์ฑํ ์ ์๋ ์ ์ฐ์ฑ์ ์ ๊ณตํ๋ฉฐ, ๋ณธ ๋น๋์ค์์๋ ๋ฌด์ํ ์ฐ์ฐ์ ์์ฑ์ ์ด์ ์ ๋ง์ถฅ๋๋ค. ๐
- Gatherer๋
Initializer,Integrator,Combiner,Finisher์ ๋ค ๊ฐ์ง ํต์ฌ ๊ตฌ์ฑ ์์๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ, ๊ฐ๊ธฐ ๋ค๋ฅธ ์ญํ ์ ์ํํฉ๋๋ค. ๐งฉ - ๋ฌด์ํ ์ฐ์ฐ์๋ฅผ ๊ตฌํํ ๋๋
Integrator์ปดํฌ๋ํธ๋ง ์ฌ์ฉํ๋ฉฐ,Initializer,Combiner,Finisher๋ ํ์ํ์ง ์์ต๋๋ค. ๐ Gatherer.Integrator๋ ํจ์ํ ์ธํฐํ์ด์ค๋ก,A(์ํ ํ์ , ๋ฌด์ํ์ ๊ฒฝ์ฐVoid),T(์ ๋ ฅ ํ์ ),R(๊ฒฐ๊ณผ ํ์ )์ ์ ์ํ๋ฉฐ,integrate๋ฉ์๋์์ ๊ฐ ์์๋ฅผ ์ฒ๋ฆฌํ๊ณdownstream.push()๋ฅผ ํตํด ๊ฒฐ๊ณผ๋ฅผ ๋ค์ ๋จ๊ณ๋ก ์ ๋ฌํฉ๋๋ค. โก๏ธintegrate๋ฉ์๋๋ ๋ค์ ์์ ์ฒ๋ฆฌ๋ฅผ ์ํด ๋ฐ๋์true๋ฅผ ๋ฐํํด์ผ ํ๋ฉฐ,false๋ฐํ ์ ์คํธ๋ฆผ ์ฒ๋ฆฌ๊ฐ ์ค๋จ๋ฉ๋๋ค. โGatherer.of(new CustomIntegrator())๋๋ ๋๋ค ํํ์์ ์ฌ์ฉํ์ฌGatherer๋ฅผ ๋ฐํํ๋ ๋ฉ์๋๋ฅผ ํตํดmap()๊ณผ ์ ์ฌํsquare()์ ๊ฐ์ ์ฌ์ฉ์ ์ ์ ์ฐ์ฐ์๋ฅผ ๊ตฌํํ ์ ์์ต๋๋ค. ๐ก- ์ฌ์ฉ์ ์ ์
Gatherer๋ ๋ณ๋์ ํด๋์ค๋ก ์ ์ํ๊ฑฐ๋ ๋ฉ์๋๋ก ์บก์ํํ์ฌ ์ฌ๋ฌ ๊ณณ์์ ์ฌ์ฌ์ฉํ ์ ์์ด ์ฝ๋์ ๋ชจ๋์ฑ๊ณผ ํจ์จ์ฑ์ ๋์ ๋๋ค. โป๏ธ





