๋งŽ์€ ์ˆ˜์˜ ์—”์ง€๋‹ˆ์–ด์™€ nested states๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ mobile app Cross-platform Architecture

RIBs์˜ ์ด๋ฆ„์€ Router, Interactor, Builder์˜ ์•ฝ์ž์ด๋‹ค. ๊ณต์‹ github์—์„œ๋Š” ๋‹ค์Œ์˜ ๊ฒƒ๋“ค์„ ์žฅ์ ์œผ๋กœ ๋‚ด์„ธ์šฐ๊ณ  ์žˆ๋‹ค.

  • Android์™€ iOS์˜ ์•„ํ‚คํ…์ณ๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๋น„์Šทํ•œ ์•„ํ‚คํ…์ณ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์–ด business logic์— ๋Œ€ํ•ด cross review๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • Test๊ฐ€๋Šฅํ•˜๋ฉฐ, ๊ฒฉ๋ฆฌ๋˜์–ด ์žˆ๋‹ค.
    • ๊ฐœ๋ณ„์ ์ธ RIB์€ ๊ฐ๊ฐ์˜ ์ฑ…์ž„์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๊ฑฐ๊ธฐ๋‹ค๊ฐ€ Child RIB ๋กœ์ง๊ณผ๋„ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ ์—์„œ ๋…๋ฆฝ์ ์œผ๋กœ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ฐœ๋ฐœ์ž์˜ ์ƒ์‚ฐ์„ฑ์„ ์œ„ํ•œ ๋„๊ตฌ์ด๋‹ค.
    • RIBs์—๋Š” ์ฝ”๋“œ ์ƒ์„ฑ, ์ •์  ๋ถ„์„ ๋ฐ runtimeย integrations์— ๋Œ€ํ•œ IDE ํˆด๋ง์ด ํ•จ๊ป˜ ์ œ๊ณต๋˜๋ฉฐ, ์ด ํˆด์€ ํฌ๊ณ  ์ž‘์€ ํŒ€์˜ ๊ฐœ๋ฐœ์ž ์ƒ์‚ฐ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚จ๋‹ค.
  • ํ™•์žฅ๊ฐ€๋Šฅํ•œ ์•„ํ‚คํ…์ณ์ด๋‹ค.
    • ๋งŽ์€ ์—”์ง€๋‹ˆ์–ด์™€ ํ•จ๊ป˜ ๊ฐ™์€ ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ๊ฐ€์ง€๊ณ  ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์Œ์ด ์ฆ๋ช…๋˜์—ˆ๋‹ค.
  • Open-Closed Principle
    • ๊ฐœ๋ฐœ์ž๋Š” ๊ฐ€๋Šฅํ•˜๋ฉด ๊ธฐ์กด ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ  ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. RIBs๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ช‡ ๊ตฐ๋ฐ์„œ ๋ณผ ์ˆ˜ ์žˆ์ฃ . ์˜ˆ๋ฅผ๋“ค์–ด ๋ถ€๋ชจ RIB์„ ๊ฑฐ์˜ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ๋ถ€๋ชจ์˜ ์ข…์†์„ฑ์ด ํ•„์š”ํ•œ ๋ณต์žกํ•œ ์ž์‹ RIB์„ attachํ•˜๊ฑฐ๋‚˜ buildํ•  ์ˆ˜ ์žˆ๋‹ค.

์‚ฌ์‹ค ์‹ค์ œ๋กœ Tutorial์„ ์ง„ํ–‰ํ•ด๋ณด๋Š” ๊ฒƒ์ด ๋” ์ดํ•ด๊ฐ€ ์‰ฝ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ํŠœํ† ๋ฆฌ์–ผ์„ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์ž˜ ๊ทธ๋ ค์ง€์ง€ ์•Š์•˜๋˜ ๊ตฌ์กฐ๋ฅผ ๊ทธ๋ฆผ์œผ๋กœ ๋‚˜ํƒ€๋‚ด์–ด ํ˜ธ์ถœ ํ๋ฆ„์„ ์ดํ•ดํ•˜๋Š”๋ฐ ๋„์›€์„ ์ฃผ๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์œผ๋กœ ์ž‘์„ฑํ•œ๋‹ค.