์๋ ํ์ธ์ Foma ์ ๋๋ค!
์ค๋ ์์๋ณผ ์ฃผ์ ๋ ์ฑ๊ธํค ํจํด ์ ๋๋ค.
๊ฐ๋จํ ์ฃผ์ ์ด๋ฏ๋ก ๋ฐ๋ก ์์ํ๊ฒ ์ต๋๋ค~
Singleton
"์ํํธ์จ์ด ๋์์ธ ํจํด์์ ์ฑ๊ธํด ํจํด์ ๋ฐ๋ฅด๋ ํด๋์ค๋, ์์ฑ์๊ฐ ์ฌ๋ฌ ์ฐจ๋ก ํธ์ถ๋๋๋ผ๋ ์ค์ ๋ก ์์ฑ๋๋ ๊ฐ์ฒด๋ ํ๋์ด๊ณ ์ต์ด ์์ฑ ์ดํ์ ํธ์ถ๋ ์์ฑ์๋ ์ต์ด์ ์์ฑ์๊ฐ ์์ฑํ ๊ฐ์ฒด๋ฅผ ๋ฆฌํดํ๋ค. ์ด์ ๊ฐ์ ๋์์ธ ์ ํ์ ์ฑ๊ธํด ํจํด์ด๋ผ๊ณ ํ๋ค." - ์ํค๋ฐฑ๊ณผ
๋ง ๊ทธ๋๋ก ํด๋์ค๊ฐ ์ฌ๋ฌ ์ฐจ๋ก ํธ์ถ๋์ด๋ ๋ฑ ํ ๊ฐ์ฒด๋ง ์์ฑ๋๋๋ก ํ๋ ๋์์ธ ํจํด์ด์์.
์ด๋ป๊ฒ ์ฌ์ฉํ ๊น์? ์ฝ๊ฒ ์์ ๋ฅผ ํตํด์ ์์๋ด ์๋ค.
์ ์ฌ๊ธฐ Foma ๋ผ๋ ์ ์ ๊ฐ ์๊ณ ๋ก๊ทธ์ธ์ ํ์ต๋๋ค.
ViewController1์์๋ Foma ์ ์ด๋ฆ์ด ํ์ํ๊ณ
ViewController2์์๋ Foma ์ ๋์ด๊ฐ ํ์ํฉ๋๋ค.
๋ง์ฝ ์ฑ๊ธํค ํจํด์ ์ฌ์ฉํ์ง ์๋๋ค๋ฉด
ViewController1์์ Foma ๋ผ๋ ์ ์ ์ ๊ฐ์ฒด๋ฅผ ์์ฑํด ์ด๋ฆ์ ๋ถ๋ฌ์ค๊ณ
ViewController2์์ Foma ๋ผ๋ ์ ์ ์ ๊ฐ์ฒด๋ฅผ ์์ฑํด ๋์ด๋ฅผ ๋ถ๋ฌ์์ ์ด 2๊ฐ์ ๊ฐ์ฒด๊ฐ ์์ฑ๋ ๊ฑฐ์์.
์ด๋ ๊ฒ ์์ฑ๋๋ฉด ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๊ฐ ์ฌ์ฉ๋๋ ๊ณณ์ด ๋ง์์๋ก ์ฌํด์ง๊ฒ๋๋ค!
์ด ๋ ์ฑ๊ธํค ํจํด์ ์ฌ์ฉํด์ ํ ๊ณณ์ Foma ์ ๋ณด๋ฅผ ๋ด์๋์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ViewController1๊ณผ ViewController2์์ ์ํ ๋ ๋นผ์ ์ฐ๋ ๊ฒ์ด์ฃ !
"์ด๋ป๊ฒ ์ฌ์ฉํ๋๋ฐ?"
1. class ์์ static ์ ์ญ ๋ณ์๋ก ํด๋น ํด๋์ค๋ฅผ ์ธ์คํด์ค๋ก ๋ง๋ค์ด์ค๋๋ค.
2. init() private๋ก ์ ์ธํด์ฃผ์ด์ ๋ค๋ฅธ ๊ณณ์์ ์ธ์คํด์ค๋ฅผ ์์ฑํ์ง ๋ชปํ๋๋ก ํฉ๋๋ค. (์ด๊ฒ์ Thread-safe๋ผ๊ณ ํฉ๋๋ค.)
์์ ์์ ๋ฅผ ์ฑ๊ธํด ํจํด์ผ๋ก ๋ง๋ค์ด๋ณด๋ฉด ์๋์ ๊ฐ์ด ๋ง๋ค์ด์ค์ ์์ต๋๋ค.
์ด CurrentUser ํด๋์ค๋ฅผ ์ด์ฉํด์ ๋ก๊ทธ์ธํ์ ๋ ์ด๋ฆ๊ณผ ๋์ด๋ฅผ ์ ํด์ค์๋ค.
๊ทธ๋ฆฌ๊ณ ์์ ์ ํด์ค ์ด๋ฆ์ ViewController1์์ ์ฌ์ฉํ๊ณ
๋์ด๋ฅผ ViewController2์์ ์์ ๋กญ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด๋ ๊ฒ ์ฑ๊ธํค ํจํด์ผ๋ก ๋ง๋ค์ด์ฃผ๋ฉด ํ๋์ ๊ฐ์ฒด๋ง ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๊ปด ์ฌ์ฉํ ์ ์๊ณ ์ ํด์ง ๊ฐ์ ์ฌ๋ฌ ๊ณณ์์ ๊ณต์
ํ์ฌ ์ฌ์ฉํ ์ ์์ต๋๋ค!
'๐ iOS > Architecture' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Design Pattern] RIBs๋?(feat. Uber) (0) | 2021.08.18 |
---|---|
[Design Pattern] MVP ํจํด์ด๋? (0) | 2021.08.11 |
[Design Pattern] ReactorKit์ด๋? (0) | 2021.06.17 |
[Design Pattern] Apple์ MVC ํจํด์ด๋? (0) | 2021.06.03 |
[Design Pattern] MVCํจํด์ด๋? (Model-View-Controller) (0) | 2021.06.03 |
๋๊ธ