Builder Pattern

์ œํ’ˆ์„ ์—ฌ๋Ÿฌ ๋‹จ๊ณ„๋กœ ๋‚˜๋ˆ ์„œ ๋งŒ๋“ค๋„๋ก ์ œํ’ˆ ์ƒ์ƒ ๋‹จ๊ณ„๋ฅผ ์บก

Wiki

Why?

Builder ๋””์ž์ธ ํŒจํ„ด์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

  • ํด๋ž˜์Šค(๋™์ผํ•œ ๊ตฌ์„ฑ ํ”„๋กœ์„ธ์Šค)๊ฐ€ ๋ณต์žกํ•œ ๊ฐ์ฒด์˜ ๋‹ค๋ฅธ ํ‘œํ˜„์„ ์–ด๋–ป๊ฒŒ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

  • ๋ณต์žกํ•œ ๊ฐ์ฒด ์ƒ์„ฑ์„ ํฌํ•จํ•˜๋Š” ํด๋ž˜์Šค๋ฅผ ์–ด๋–ป๊ฒŒ ๋‹จ์ˆœํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

How?

๋นŒ๋” ๋””์ž์ธ ํŒจํ„ด์€ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

  • ๋ณ„๋„์˜ Builder ๊ฐœ์ฒด์—์„œ ๋ณต์žกํ•œ ๊ฐ์ฒด์˜ ์ผ๋ถ€๋ฅผ ๋งŒ๋“ค๊ณ  ์กฐ๋ฆฝํ•˜๋Š” ๊ฒƒ์„ ์บก์Аํ™”ํ•ฉ๋‹ˆ๋‹ค.

  • ํด๋ž˜์Šค๋Š” ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ์ƒ์„ฑํ•˜๋Š” ๋Œ€์‹  ๊ฐ์ฒด ์ƒ์„ฑ์„ Builder ๊ฐ์ฒด์— ์œ„์ž„ํ•ฉ๋‹ˆ๋‹ค.

Advantages

  • ์ œํ’ˆ์˜ ๋‚ด๋ถ€ ํ‘œํ˜„์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ƒ์„ฑ ๋ฐ ํ‘œํ˜„์„ ์œ„ํ•ด ์ฝ”๋“œ๋ฅผ ์บก์Аํ™”ํ•ฉ๋‹ˆ๋‹ค.

  • ๊ตฌ์„ฑ ํ”„๋กœ์„ธ์Šค์˜ ๋‹จ๊ณ„๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์—ฌ๋Ÿฌ ๋‹จ๊ณ„์™€ ๋‹ค์–‘ํ•œ ์ ˆ์ฐจ๋ฅผ ๊ฑฐ์ณ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ œํ’ˆ์˜ ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Disadvantages

  • ๊ฐ ์ œํ’ˆ ์œ ํ˜•์— ๋Œ€ํ•ด ๊ณ ์œ ํ•œ ConcreteBuilder๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ๋นŒ๋” ํด๋ž˜์Šค๋Š” ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์˜์กด์„ฑ ์ฃผ์ž…์„ ๋ฐฉํ•ดํ•˜๊ฑฐ๋‚˜ ๋ณต์žกํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ

Last updated

Was this helpful?