GoF์ ๋์์ธ ํจํด, ํ์ฌ๋ ํจํด์ ๋ํด ์์๋ณธ๋ค.
ํด๋น ๊ธ์, ๋ค์์ ์ฝ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ดํดํ๋ ๊ฒ์ด ํธ๋ฆฌํฉ๋๋ค.
ํต์ฌ ์์ฝ
- ์ด๋ค ๊ธฐ๋ฅ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฌ๋ฌ ๊ฐ์ฒด๋ค ์ฌ์ด์ ๋ณต์กํ ๋ฉ์๋ ์ฌ์ฉ์ ๊ฐ์ถ๋ ํจํด
- ์ฆ, ์ฌ์ฉํ๋ ์ชฝ์์๋ ์ฌ๋ฌ ํด๋์ค๋ฅผ ์ํ์ ์์ด ๋จ์ํ๊ฒ ์ฌ์ฉํ ์ ์๋ค.
- ๋ธ๋๋ฐ์คํ ๋ผ๊ณ ์๊ฐํด๋ ์ข๋ค.
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ๊ณตํ ์ ์ฌ์ฉํ๋ฉด ์ข๋ค.
- ๋ฌผ๋ก ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ ํํด์ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์, ์ด์ฐ๋ณด๋ฉด ์ฌ์ฉํ๋ ์ชฝ์์ ์ ์ฐ์ฑ์ด ๋จ์ด์ง๋ค๊ณ ์๊ฐํ ์๋ ์๊ฒ ๋ค.
- ๋ค๋ง ๋ณดํต์ ์๋ธ ์์คํ ํด๋์ค ์ ๊ทผ๋ ์ด์ด์ฃผ๊ธฐ ๋๋ฌธ์ ๊ทธ๋ ๊ฒ ์๊ฐ์ ์ ํ์ง ์๋ ํธ.
์์
- Class Diagram์ด ์ด๋ ต๋ค๋ฉด ์ฌ๊ธฐ๋ฅผ ์ฐธ๊ณ ํ์.
- ํด๋น ์ฝ๋๋ DB์์ ํน์ ์ด๋ฆ์ ๊ธฐ๋ฐ์ผ๋ก ์๋ฃ๋ฅผ ์กฐ์ฌํ๋ ๋์์ ๋ชจ์ฌํ ๊ฒ์ด๋ค.
- ์ด ๋, ์บ์๋ฅผ ์ฌ์ฉํ์ฌ ์๋๋ฅผ ๋ํ๋ ค ํ๋ค.
- ์ด ๊ณผ์ ์์ ์บ์ ์กฐํ, DB ์กฐํ, ์บ์ ์ฝ์ ๋ฑ ์ด๋ ํ ๋ก์ง์ด ํ์ํ๋ค.
- ๋ง์ฝ ์ด ๊ณผ์ ์ ์ฌ์ฉํ๋ ์ธก์์ ์กฐํฉํ๋๋ก ํ๋ค๋ฉด ์๋์ ๊ฐ์ ๋๋ฌ์ด ์ฝ๋๊ฐ ๋ฐ์ํ๋ค.
- ์ด๋ป๊ฒ ์ฌ์ฉํด์ผ ํ๋์ง์ ๋ํด ์ถ๊ฐ๋ก ์กฐ์ฌํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์ฑ ์ธก๋ฉด์์ ์ข์ง ๋ชปํ๋ค.
- ๊ฐ๋ฐ์๊ฐ ํ๋์ ํด๋์ค๋ฅผ ๋ง๋ค๊ณ , ๊ทธ ์์์ ์ด๋ป๊ฒ ๋์ํ ์ง์ ์ ์ํด๋๋ฉด ํธํ์ง ์์๊น?
- Facade ๊ฐ์ฒด ์์ ํด๋น ํจ์์ ๋ด์ฉ์ ์ด๋ํ๋ค.
- ์ธ๋ถ์์๋
run(name:)
๋ง ํธ์ถํ๋ฉด ๋๋ค.
๋๊ธฐ
- ์ปดํ์ผ๋ฌ ์์คํ ์ ์๊ฐํด๋ณด์.
- Parser, Scanner ๋ฑ์ ์ฌ๋ฌ ์์ ์ ๊ฑฐ์ณ์ผ ๋น๋ก์ ๋ฐ์ด๋๋ฆฌ๊ฐ ๋ง๋ค์ด์ง๋ค.
- ํ์ง๋ง ์ฌ์ฉํ๋ ์ชฝ์์๋
compile()
๋ฉ์๋ ํ๋๋ง ์๋ฉด๋๋ค.
ํ์ฉ์ฑ
- ๋จ์ํ ์ธํฐํ์ด์ค ์ ๊ณต์ด ํ์ํ ๋
- ์ฌ์ฌ์ฉ์ ์ํ ์์ ํด๋์ค๋ฅผ ๋ง๋ค์์ผ๋, ์ค์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ด๋ ค์์ก์ ๋
- ์๋ธ์์คํ ๊ฐ์ ๊ฒฐํฉ๋๋ฅผ ์ค์ด๊ณ ์ถ์ ๋
- ์๋ธ์์คํ ์ ๊ณ์ธตํ ์ํค๊ณ ์ถ์ ๋ ๋ฌถ์ด์ ์ ๊ทผ์ ์ ์ ๊ณตํ์ฌ ์ข ์์ฑ์ ์ค์ผ ์ ์์
๊ตฌ์กฐ
์ฐธ์ฌ์
- Facade(
Facade
)- ๋จ์ํ๊ณ ์ผ๊ด๋ ํตํฉ ์ธํฐํ์ด์ค ์ ๊ณต
- ์๋ธ ์์คํ
์ ๊ตฌ์ฑํ๋ ํด๋์ค๊ฐ ์ด๋ค ํด๋์ค๋ฅผ ์์ฒญํด์ผ ํ๋์ง ์๊ณ ์์
- ์์ ์์๋ก๋ถํฐ ์๊ฐํด๋ณด๋ฉด ์๋๋ main์์ ๊ฐ๋ฐ์๊ฐ ํ๋ค๊ฐ ์ฎ๊ธด ๊ฒ ๋ฟ์
- ์ฆ, ๋ง๋ ๊ฐ๋ฐ์๊ฐ ์ด๋ป๊ฒ ๋์ํ๋์ง ๋ค ์๊ณ ์ฝ๋๋ฅผ ์ฎ๊ฒจ๋ ๊ฒ
- ์ฌ์ฉ์์ ์์ฒญ์ ์๋ธ์์คํ ๊ฐ์ฒด๋ค์๊ฒ ์ ๋ฌํจ
- Subsystem(
DBMS
,Cache
)- ์๋ธ์์คํ ์ ๊ธฐ๋ฅ์ ๊ตฌํํจ
- ์์ ์ ์ค์ ๋ก ์ฒ๋ฆฌํ์ง๋ง Facade์ ๋ํ ์๋ฌด๋ฐ ์ ๋ณด๊ฐ ์์
ํ๋ ฅ ๋ฐฉ๋ฒ
- ์ฌ์ฉ์๋ Facade์ ์ ์๋ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ํธ์์ฉํจ
- Facade๋ ์๋ง์ ๊ฐ์ฒด์๊ฒ ํด๋น ์์ ์ ์ ๋ฌํจ
- ์ฌ์ฉ์๋ ์๋ธ์์คํ ์ ๊ตฌ์ฑํ๋ ๊ฐ์ฒด๋ก ์ง์ ์ ๊ทผํ ํ์๊ฐ ์์
๊ฒฐ๊ณผ
- ์๋ธ ์์คํ ์ ๊ตฌ์ฑ ์์๋ฅผ ๋ณดํธํ ์ ์๋ค.
- ์๋ธ ์์คํ ๊ณผ ์ฌ์ฉ์ ์ฝ๋๊ฐ์ ๊ฒฐํฉ๋๋ฅผ ์ฝํ๊ฒ ๋ง๋ ๋ค.
- ์์ฉํ๋ก๊ทธ๋จ ์ชฝ์์ ์๋ธ ์์คํ ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์์ ํ ๋ง์ง๋ ์๋๋ค.
๊ด๋ จ ํจํด๊ณผ ์ฐจ์ด์
- ์ถ์ ํฉํ ๋ฆฌ(03. Abstract Factory)
- ์๋ธ ์์คํ ์ ๋ ๋ฆฝ์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก ๊ฐ์ฒด ์์ฑ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ํจ๊ป ์ฌ์ฉ ๊ฐ๋ฅ
- ์ค์ฌ์(20. Mediator) - ๊ธฐ์กด์ ์กด์ฌํ๋ ํด๋์ค์ ๊ธฐ๋ฅ์ฑ์ ์ถ์ํํ๋ ๋ฉด์์ ์ ์ฌ, ํ์ง๋ง
- ์ค์ฌ์: ๊ฐ์ฒด๋ค๊ฐ์ ํ๋ ฅ ๊ด๊ณ๋ฅผ ์ถ์ํํ์ฌ ๊ธฐ๋ฅ์ ์ง์ค์ ๋ง์.
- 13. Facade: ์๋ธ์์คํ ์ธํฐํ์ด์ค ์์ฒด๋ฅผ ์ถ์ํํ์ฌ ์ฌ์ฉ์ ์ฉ์ดํ๊ฒ ํ์.
- ๋จ์ผ์ฒด(08. Singleton) - ํ๋๋ง ์์ด๋ ๋๋ฉด ์ฑ๊ธํค์ผ๋ก ๊ตฌํ
์๊ฐํด๋ณผ ์
- UIKit๊ณผ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ด๋ฐ์์ผ๋ก ๋ง์ด ๋์ด์๋ค.
- ์ฌ์ฉํ๊ธฐ ํธํ๊ฒ ํ๊ธฐ ์ํด
UILabel
๊ฐ์ ๊ฒ์ ์ ๊ณตํ์ง๋ง, - ์ค์ง์ ์ผ๋ก ์๋ซ๋จ์
CoreText
์ ๊ฐ์ ๊ฒ์ผ๋ก ๋์ด์๋ค. - ๋ง๋ ์๊ฐ ์๋ ์ ์์ผ๋, ๊ฒฐ๊ตญ ์ฌ์ฉ์ฑ์ ์ํด Interface์ ์ ์ฝ์ ๊ฑธ์๋ค๋ ์ ์์ ์ ์ฌํ๋ค ํ ์ ์๋ค.