GoF์ ๋์์ธ ํจํด, ์ฑ๊ธํค ํจํด์ ๋ํด ์์๋ณธ๋ค.
ํด๋น ๊ธ์, ๋ค์์ ์ฝ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ดํดํ๋ ๊ฒ์ด ํธ๋ฆฌํฉ๋๋ค.
ํต์ฌ ์์ฝ
- ๋ค๋ฅธ ํด๋์ค์์ ์ ๊ทผํ ์๋ ์๋๋, ์์ฑ์ ํ์ง ๋ชปํ๊ฒ ๋ง๋๋ ํจํด
- ์ค์ง ํ๋์ ํด๋์ค ์ธ์คํด์ค๋ง ์ ๊ณตํ๊ณ , ์ ์ญ์ ์ธ ์ ๊ทผ์ ์ ์ ๊ณตํจ
- swift์์๋
static let
์ผ๋ก ์ฝ๊ฒ ์ฒ๋ฆฌํ ์ ์์ผ๋, ๋ค๋ฅธ ์ธ์ด์ ๊ฒฝ์ฐ instance์ ๊ฐ์๋ฅผ 1๊ฐ๋ก ๋ณด์ฅํด์ฃผ๋ ๋ฐฉ๋ฒ์ด ์๊ตฌ๋จ
์์
- ํน๋ณํ ๊ฒ์ ์๋ค.
ํ์ฉ์ฑ
- ํด๋์ค์ ์ธ์คํด์ค๊ฐ ์ค์ง ํ๋์ฌ์ผ ํจ์ ๋ณด์ฅํ๊ณ , ์ ์ ์๋ ์ ๊ทผ์ ์ผ๋ก ๋ชจ๋ ์ฌ์ฉ์๊ฐ ์ ๊ทผํ ์ ์๋๋ก ํด์ผํ ๋
- ๊ทธ๋ฌ๋ฉด์ ์๋ธํด๋์ฑ์ผ๋ก ํ์ฅ๋ ๋ ์ ์์ด์ผ ํ๋ฉฐ, ์ฌ์ฉ์๋ ์ฝ๋ ์์ ์์ด ํด๋น ์๋ธํด๋์ค ์ธ์คํด์ค๋ฅผ ์ฌ์ฉํ ์ ์์ด์ผ ํ ๋
์ฐธ์ฌ์
- Singleton(
King
)
ํ๋ ฅ ๋ฐฉ๋ฒ
- ์ฌ์ฉ์๋ Singleton class์ ์ ์๋
instance()
์ฐ์ฐ์ผ๋ก ์ ์ผํ๊ฒ ์์ฑ๋๋ ๋จ์ผ์ฒด ์ธ์คํด์ค์ ์ ๊ทผํ๋ค. - swift์ ๊ฒฝ์ฐ ์ผ๋ฐ์ ์ผ๋ก
shared
๋ก ์ ์ํ ์ ์ ๋ณ์๋ก ์ ๊ทผํ๋ค.
๊ฒฐ๊ณผ
- ์ ์ผํ๊ฒ ์กด์ฌํ๋ ์ธ์คํด์ค๋ก์ ์ ๊ทผ์ ํต์
- ์ ์ญ ๋ณ์ ๋๋น namespace๋ฅผ ์ขํ๊ธฐ ๋๋ฌธ์ ์ข๋ค.
- ์ฐ์ฐ ๋ฐ ํํ์ ๋ณ๊ฒฝ์ ํ์ฉํ๋ค. ์์์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ด๋ค.
- ์ธ์คํด์ค์ ๊ฐ์๋ฅผ ๋ณ๊ฒฝํ๊ธฐ ์์ ๋กญ๋ค.
- ๊ธฐ๋ณธ์ ์ผ๋ก
instance()
์ ๊ฐ์ ์ฐ์ฐ์ผ๋ก ํ๋์ ์ธ์คํด์ค๋ฅผ ๋ณด์ฅ๋ฐ๋๋ค. - ์ฌ๋ฌ๊ฐ๊ฐ ํ์ํ๋ค๋ฉด ์ธ์คํด์ค์ ๊ฐ์๋ง ๋ณ๊ฒฝํด์ฃผ๊ณ ์์ฑ๋ ์ธ์คํด์ค๋ก ์ ๊ทผํ๋๋ก ๊ตฌํ๋ง ์์ ํด์ฃผ๋ฉด ๋๋ค.
- ๊ธฐ๋ณธ์ ์ผ๋ก
- ํด๋์ค ์ฐ์ฐ์ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค ์ ์ฐํ ๋ฐฉ๋ฒ์ด๋ค.
- ๋จ์ ์ธ ์๋ก swift์์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ํด๋์ค ์ ์ ๋ณ์๋ฅผ ์ฌ์ฉํด์ ์ ๊ทผํ๋ ๋ฐฉ์์ด๋ค.
- ์ด๋ด ๊ฒฝ์ฐ ์ธ์คํด์ค์ ๊ฐ์๋ฅผ ์ฌ๋ฌ๊ฐ๋ก ๋ณ๊ฒฝํ๋ ๊ฒ์ด ์ด๋ ต๋ค.
๊ด๋ จ ํจํด๊ณผ ์ฐจ์ด์
- ๋ง์ ํจํด์ด ์ฑ๊ธํค์ผ๋ก ๊ตฌํ ๊ฐ๋ฅํจ
- ์ถ์ ํฉํ ๋ฆฌ, ๋น๋, ์ํ ํจํด ๋ฑ๋ฑ