Skip to content

Latest commit

ย 

History

History
49 lines (26 loc) ยท 2.85 KB

BuilderPattern-junha.md

File metadata and controls

49 lines (26 loc) ยท 2.85 KB

[์ƒ์„ฑ ํŒจํ„ด] Builder Pattern


๋นŒ๋” ํŒจํ„ด์ด๋ž€?

๋นŒ๋” ํŒจํ„ด์€ ๋ณต์žกํ•œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ๊ณผ์ •์„ ๋ถ„๋ฆฌํ•˜์—ฌ ๋™์ผํ•œ ์ƒ์„ฑ ์ ˆ์ฐจ์—์„œ ์„œ๋กœ ๋‹ค๋ฅธ ํ‘œํ˜„ ๊ฒฐ๊ณผ๋ฅผ ๋งŒ๋“œ๋Š” ํŒจํ„ด์ž…๋‹ˆ๋‹ค.


๋นŒ๋” ํŒจํ„ด ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ

๋นŒ๋” ํŒจํ„ด์€ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ƒ๊ฐํ•˜๋ฉด ๊ณต์žฅ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋งŒ์•ฝ ์•„์ดํฐ์„ ๋งŒ๋“œ๋Š” ๊ณต์žฅ์ด ๋Œ์•„๊ฐ„๋‹ค๊ณ  ํ•˜๋ฉด ์•„์ดํฐ์˜ ๊ฒฝ์šฐ ์•ˆ์— ๋‚ด๋ถ€๊ฐ€ 256์ธ์ง€? 128์ธ์ง€? ์ปฌ๋Ÿฌ๋Š” red์ธ์ง€ blue์ธ์ง€

์ด๋Ÿฐ ๊ฒฝ์šฐ class๋ฅผ ๋งŒ๋“ค๊ฒŒ ๋˜๋ฉด red์ผ ๊ฒฝ์šฐ ํด๋ž˜์Šค๊ฐ€ ๋งŒ๋“ค์–ด์ง€๊ณ  blue์ธ ๊ฒฝ์šฐ๋„ ํด๋ž˜์Šค๊ฐ€ ๋งŒ๋“ค์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์€ ๊ณ„์ธต๊ตฌ๋„๊ฐ€ ํšจ์œจ์ ์ด์ง€ ๋ชปํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋˜๋Š” ์ž์‹ํด๋ž˜์Šค๋ฅผ ๋Š˜๋ ค์„œ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ด์ž๊ณ  ํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋งŒ์•ฝ red ์ปฌ๋Ÿฌ๊ฐ€ ์ธ๊ธฐ๊ฐ€ ์—†์–ด์ง€๋ฉด red์˜ ์ž์‹ ํด๋ž˜์Šค๋Š” ์•„๋ฌด๋„ ์“ฐ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์‚ฌ์šฉ๋˜์ง€ ์•Š์•„์„œ ์ƒ์„ฑ์ž ํ˜ธ์ถœ์ฝ”๋“œ๊ฐ€ ๋”๋Ÿฌ์›Œ์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.ย 

๊ทธ๋Ÿผ ๋นŒ๋” ํŒจํ„ด์€ ์ด๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ–ˆ๋‚˜์š”? ๋ผ๊ณ  ๋ฌผ์œผ๋ฉด ๋นŒ๋” ํŒจํ„ด์€ ๋นŒ๋”๋ผ๋Š” ๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์€ ์‰ฝ๊ฒŒ ์ƒ๊ฐํ•ด์„œ ๊ณต์žฅ์—์„œ ์ฒ˜์Œ๋ถ€ํ„ฐ ํ•˜๋‚˜์˜ ๊ฐ’๋งŒ ๋ฐ›๊ณ  ๋งŒ๋“ค์–ด๋‚ด๋Š” ๊ฒƒ์ด ์•„๋‹Œ ๋นŒ๋”๋ฅผ ๋งŒ๋“ค์–ด์„œ ์›ํ•˜๋Š” ๊ฐ’์„ ๋„ฃ์œผ๋ฉด ๋นŒ๋”๊ฐ€ ๋ชจ๋“  ์žฌ๋ฃŒ์™€ ํŠน์ง•์— ๋งž๊ฒŒ ํ•ฉ์น˜๋Š” ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹œ๋ฉด ์ดํ•ดํ•˜์‹œ๊ธฐ ํŽธํ•ฉ๋‹ˆ๋‹ค. ^^


๋นŒ๋” ํŒจํ„ด๋Š” ์ฃผ๋กœ ์–ด๋–ค ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ• ๊นŒ?

์ฃผ๋กœ ๋ณต์žกํ•œ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด์„œ ๊ฐ์ฒด๋ฅผ ์„ ์–ธํ•˜๊ณ  ๊ฐ’์ด ๋งŽ์ด ๋ณ€๋™๋˜๊ฑฐ๋‚˜ ์„ ์–ธ๋ถ€๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ
์žฌ์„ ์–ธ์— ์–ด๋ ค์›€์„ ๊ฒฉ์„ ๊ฒฝ์šฐ ๋นŒ๋” ํŒจํ„ด์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋นŒ๋” ํŒจํ„ด์€ ์–ธ์ œ ์‚ฌ์šฉํ•ด์•ผ์ง€ ํšจ์œจ์ ์ผ๊นŒ?

์‚ฌ์‹ค swift ์กฐ๊ธˆ ํ•˜์‹  ๋ถ„๋“ค์„ ์กฐ๊ธˆ ๋‹นํ™ฉํ–ˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. swift์—๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ init์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ ‡๊ฒŒ ํƒ€์ž…์„ ๋งŒ๋“ค๊ธฐ ์•Š์•„๋„ ์ดˆ๊ธฐํ™” ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ํ”„๋กœํผํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ„๋‹จํ–ˆ์„ ํ…Œ๋‹ˆ๊นŒ์š”. ๋นŒ๋” ํŒจํ„ด์€ ์‚ฌ์‹ค swift์—์„œ๋Š” ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ํŒจํ„ด์€ ์•„๋‹™๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์œ„์—์„œ ๋งํ–ˆ๋“ฏ์ด ํ”„๋กœํผํ‹ฐ ๊ณ„์ˆ˜๊ฐ€ ์—„์ฒญ ๋งŽ๊ณ  ๋ณต์žกํ•œ ๊ฒฝ์šฐ ํ•œ ๋ฒˆ์ฏค ์‚ฌ์šฉํ•ด ๋ณผ ๋งŒํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค


๋นŒ๋” ํŒจํ„ด์˜ ๊ตฌ์กฐ ์ดํ•ดํ•ด๋ณด๊ธฐ!

Builder -> Product

๋นŒ๋” ํŒจํ„ด์˜ ๊ตฌ์กฐ๋Š” Product์™€ ์ด๋ฅผ ๋งŒ๋“œ๋Š” Builder๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

Buider๋Š” ์–ด๋–ค ๊ฐ’๋“ค์„ ์„ธํŒ…ํ•˜๋Š” ๋ฉ”์„œ๋“œ์™€ ์ตœ์ข…์ ์œผ๋กœ Product๋ฅผ ๋งŒ๋“œ๋Š” build() ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋•Œ๋ฌธ์— Product๊ฐ€ ๋งŒ๋“ค์–ด์ง€๋Š” ๋ชจ๋“  ๊ณผ์ •์—๋Š” Builder์˜ ์ฑ…์ž„์ด ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.


๋นŒ๋” ํŒจํ„ด ์˜ˆ์ œ ์ฝ”๋“œ

Builder Pattern ์˜ˆ์ œ์ฝ”๋“œ

์˜ค๋Š˜๋„ ๊ธด๊ธ€ ์ฝ์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!!!!