๋น๋ ํจํด์ ๋ฌด์์ผ๊น? ๋ฌด์์ ์กฐ์ฌํด์ผ ํ ๊น? ์ด๋ค์์ผ๋ก ํ์ฉํ๋ ๊ฒ์ด ์ข์๊น?
Builder
- ๊ฐ์ฒด์ ์์ฑ๊ณผ์ ์ ๊ทธ ๊ฐ์ฒด์ ํด๋์ค๋ก๋ถํฐ ๋ถ๋ฆฌํ๋ ๋ฐฉ๋ฒ
- ๊ฐ์ฒด์ ๋ถ๋ถ๋ถ๋ถ์ ๋ง๋ค์ด ๋๊ฐ๋ค ์ค๋น๊ฐ๋๋ฉด ๊ทธ์ ์์ผ ๊ฐ์ฒด๋ฅผ ์์ฑ
StringBuilder
- ๋จ์ํ ๊ฒ์ ์ด๊ฑธ ์ฌ์ฉํด์ ์ํ๋ ๋ฌธ์์ด์ ๋ง๋ค ์ ์๋ค.
- ํ์ง๋ง ๋ณต์กํด์ง๋ค๋ฉด?
- ์๋ฅผ ๋ค์ด ํ๋์ String์ 100๊ฐ์ ๋ณ์๋ฅผ ๋ฃ์ด String์ ๋ง๋ค์ด์ผ ํ๋ค๋ฉด?
- ์ด๋ด ๋
StringBuilder
๋ฅผ ์ฌ์ฉํ๋ฉด ํธํ๋ค. - overloading๋ ๋ฉ์๋๊ฐ ์์ด์ ๋ค์ํ ์๋ฃํ๋ ๋ฐ์ ์ ์๋ค.
- ์ฌ์ง์ด ์ฑ๋ฅ๋ ๋ ๋น ๋ฅด๋ค. ์์์ ํจ์จ์ ์ผ๋ก ํฉ์ณ์ค๋ค.
- ๋ค๋ง ๋ด๋ถ๊ฐ ์ด๋ป๊ฒ ๋๋์ง ์๋ฉด ๋ ์ข์
- ๋ง์ง๋ง์
toString()
์ ํตํด ๊ฒฐ๊ณผ๋ฌผ์ ๊ฐ์ ธ์ด
๋ฌธ์ ์
- ์ฝ๋๊ฐ ์ ์ฝํ๋ 2%๋ถ์กฑ
- ์์ฑ์์ ์๋: ์ ๋ชฉ์ ๋ฃ๊ณ ์ค์ ๋ฐ๊พธ๊ณ ์ถ๋ค.
- ๊ทผ๋ฐ ์ ์์ ์ฝ๋๋ง ๋ด์๋ ๋ ๋ฆฝ์ ์ธ 3๊ฐ์ ์ปดํฌ๋ํธ๋ฅผ ์ถ๊ฐํ๋ ๋๋์
Fluent interface
- GoF์๋ ์์
- ์ต๊ทผ์ builder ํจํด์ ๋ฐ์ ๋ ๋ฐฉ์
- ๋ฐํ ํ์
์ ์๊ธฐ์์ ์ ๋๊ฒจ์ฃผ๋ ๋ฐฉ์!
- (Walnut์ด builder pattern์ผ๋ก ๊ตฌํ๋์๋ค๋ ๊ฒ์ ์ ์ ์์์)
์๊ธฐ ์ค์ค๋ก๋ฅผ ๋ฐํํ๋ค๊ณ โฆ?
- ํจ์ Signature๋ง ๋ด์๋ ์ด์ํ๋ค.
- ํด๋ผ์ด์ธํธ ์ธก์์ ํด๋น ๊ฐ์ฒด๋ฅผ ๋ค๊ณ ์๋๋ฐ ์
return this
๋ฅผ ํ์ง? - ์ด์ํ์ง๋ง ์ด์ ๋ ์์์ผ๋ก ์ทจ๊ธ๋๋ค.
- ํด๋ผ์ด์ธํธ ์ธก์์ ํด๋น ๊ฐ์ฒด๋ฅผ ๋ค๊ณ ์๋๋ฐ ์
์๋ชป ์ฌ์ฉํ๋ ๋น๋ ํจํด
- ์ง์ ์ ๋ณด๋ฅผ ์ ๋ ฅํ๋ ํด๋์ค๊ฐ ์๋ค๊ณ ํด๋ณด์.
- ๊ทผ๋ฐ ๋๋ฒ์งธ๋ ๋ฌธ์ ๊ฐ ์๋ค.
- ์ฑ๊ณผ ์ด๋ฆ์ ๋ฐ๊ฟ์ ๋ฃ์๋ค. ๊ทธ๋ฆฌ๊ณ ๋์ด์ Id๋!
- ์ด๋ฐ ๊ฒฝ์ฐ๋ ๋น์ฐํ ์ปดํ์ผ๋ฌ๊ฐ ์ก์์ค ์ ์๋ค.
- ์ด๋ฐ ๊ฒ์ builder๋ก ํด๊ฒฐํด๋ณด์.
- ์ด๋ ๊ฒ ํ๋ฉด ๋ฉ์๋ ์ด๋ฆ์ผ๋ก ๋ฃ์ผ๋ ์๋ชป๋ ๊ฐ์ ์ ๋ฌํ ๊ฐ๋ฅ์ฑ์ด ์ ์ด์ง๋ค.
- ํ์ง๋ง, ์ด๊ฑด ์๋ชป๋ ํด๊ฒฐ๋ฒ
๋ง์ฝ์ ์ค์ํ๋ค๋ฉด?
- ์๋ฐ์์๋ ์ด๊ธฐ๊ฐ์ด 0์ด๋ค. ๋ฐ๋ผ์ 0๋ ๋ถํฐ ์ผํ ์ง์์ด ๋๋ค.
- ๊ฐ์ฒด๋ ์์ฑ๋ถํฐ ์ ํจํ ์ํ์ฌ์ผ ํ๋๋ฐ ์ด๋ฅผ ์ด๊ฒผ๋ค.
- ์ด๊ฑด ๋์์ธ ํจํด์ ์๋ชป ์ฌ์ฉํ ๊ฒฝ์ฐ๋ค.
- ๊ทผ๋ฐ ์ด๋ฐ์์ผ๋ก ๋ง๋ SDK๊ฐ ๋ง์์ก๋ค..
- G๋ชจ์ฌ์กฐ์ฐจ๋..
StringBuilder
๋ ์ ํจํ ๊ฐ์ฒด๋ง ๋ฐํํ๋ค.String
๋ง ๋ค๋ค๊ธฐ ๋๋ฌธ์, ์ธ์ ํธ์ถํด๋ ์ ํจํString
๊ฐ์ฒด๊ฐ ๋์จ๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ 1
- ํ๋ผ๋ฏธํฐ๋ฅผ ๋นผ๋จน์ง ์์ผ๋ฉด ๋๋ ๋ฌธ์ ๋ค.
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ํ๋ผ๋ฏธํฐ ์์ฒด๋ฅผ ๊ฐ์ง๋ ๋ค๋ฅธ ํด๋์ค๋ฅผ ๋ง๋ค์ด์ ๊ด๋ฆฌํ์.
- ์์ํ ๋ฐ์ดํฐ๋ง ๋ด์ ๊ตฌ์กฐ์ฒด์ฒ๋ผ ๋ง๋ค์ด์ ์ ๋ฌํ๋ ๋ฐฉ์์ด๋ค.
- swift๋ผ๋ฉด ๋น์ฐํ struct๋ก ๋ง๋ค๊ฒ ์ง
- DTO
- ์๋ชป ์ฌ์ฉํ Builder ํจํด ๋ณด๋ค๋ ์ด๊ฒ ์ข ๋ ๋ช ํํ๊ณ ์ข๋ค.
- ์ธ์ ์์(firstName, lastName) ์๋ชป ๋ฃ๋ ๋ฌธ์ ๋ ์์ ํ ์ ์๋ค.
- ๊ทผ๋ฐ ๊ทธ๋๋ง ๋ซ๋ค๋ ๊ฑฐ์ง ์ฌ์ ํ ์ธ์๋ฅผ ๋นผ๋จน์ ์ ์๋ค๋ ๋ฌธ์ ๊ฐ ์๋ค.
- ๊ตณ์ด
with~
,build()
ํธ์ถํ๊ณ ํ๋ ๋ฐฉ์์ ์ธ ์ด์ ๊ฐ ์๋ค๋ ๋ง์ ํ๊ณ ์ถ์ ๊ฒ
ํด๊ฒฐ ๋ฐฉ๋ฒ 2
- named parameter
- ์ธ์์ ์ด๋ฆ์ ๋ฌ์๋ฒ๋ฆฌ๋ ๋ฐฉ๋ฒ
- ์์ ๋ชจ๋ ๋ฌธ์ ๋ฅผ ๊ณ ์น ์ ์๋ค.
- Swift์์ ๋ณ์ ์ธ์๋ฅผ ๋ช ์์ ์ผ๋ก ๋ณด์ฌ์ฃผ๋ ๊ฒ์ ๋งํ๋ค.
์ ๋ฆฌ
- ์์ ๊ฐ์ด ์ธ์ด ์์ฒด์์ ์ง์ํด์ค์ผ ํ๋ ๊ฒ๋ค์ด ์๋ค.
- ์ธ์ด์์ ์ง์ํ์ง ์๋ ๊ธฐ๋ฅ(named parameter)๋๋ฌธ์ builder๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ๊ผผ์๋ก ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
- builder pattern์, ์ด๋ ์ํ์์ ์ ์ฉํด๋ ๊ฐ์ฒด์ ์ ํจ์ฑ์ด ๋ณด์ฅ๋ ๊ฒฝ์ฐ์ ์ฌ์ฉํด์ผ ํ๋ค.
- ์๋ฅผ ๋ค์ด,
UIView
์ ๋ค์ํ ์์๋ฅผ ๋ฃ์ ์ ์์ง๋ง, ๋ฃ์ง ์์๋UIView
์์ฒด๊ฐ ์๋ฏธ์๋ ๊ฒฝ์ฐ๊ฐ ์๊ฒ ๋ค.
๋คํ์ ์ธ ๋น๋ ํจํด
.csv
ํ์ผ์ด ์๋ค๊ณ ์๊ฐํด๋ณด์.- ์ด๊ฑธ HTML, markdown์ผ๋ก ๊ฐ๊ฐ ๋ณํํ๊ณ ์ถ๋ค.
- CsvReader์ ๋ฌธ์์ด์ ๋ฃ์ด์ค๋ค.
- ์ด๋ค ํ์ ์ Builder๋ฅผ ๋ง๋ค์ง ์ ํ
- CsvReader๋ ๊ฐ์ ํ์ ์์ ์ฒ๋ฆฌํด๋ฒ๋ฆฐ๋ค. ๊ฐ๊ฐ์ Builder์์ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ๋ง ๋ค๋ฅผ๋ฟ์ด๋ค. (๋คํ์ ํธ์ถ)
- ๋ง์ง๋ง์ผ๋ก builder์์ CsvReader์์ ๋ช ๋ นํ ๊ฒฐ๊ณผ๋ฅผ ์กฐํฉํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ์ป๋๋ค. (๋คํ์ ํธ์ถ X)