๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • Dev Blog

๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ51

[GoF ๋””์ž์ธ ํŒจํ„ด] - ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด ๋ชจ๋“  ์ฝ”๋“œ๋Š” Swift๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ ์ƒํ™ฉ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์“ฐ๋Š” ์—ญํ• ์„ ํ•˜๋Š” ๊ฐ์ฒด๊ฐ€ ์žˆ๊ณ  ์ฝ”๋“œ์˜ ์—ฌ๋Ÿฌ ๊ณณ์—์„œ ์ด ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด์ž. ๊ฐ๊ฐ์˜ ์ฝ”๋“œ ์˜์—ญ์—์„œ ์ด ๊ฐ์ฒด์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ผ์ผ์ด ์ƒ์„ฑํ•œ๋‹ค๋ฉด ๋‘ ๊ฐ€์ง€ ๋ฌธ์ œ์ ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฒซ์งธ, ๋ชจ๋“  ์ฝ”๋“œ ์˜์—ญ์—์„œ ์ƒˆ๋กœ์šด ์ธ์Šคํ„ด์Šค๋ฅผ ๊ณ„์† ์ƒ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค.๋‘˜์งธ, ํ•˜๋‚˜์˜ ์ฝ”๋“œ ์˜์—ญ์—์„œ์˜ ์ž‘์—… ๊ฒฐ๊ณผ๊ฐ€ ๋‹ค๋ฅธ ์ฝ”๋“œ ์˜์—ญ์— ๊ณต์œ ๋˜์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, A ์ฝ”๋“œ ์˜์—ญ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ์‹œ์ผœ ๋†จ์ง€๋งŒ, B ์ฝ”๋“œ ์˜์—ญ์—์„œ๋Š” ์ƒˆ๋กœ์šด ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— A ์˜์—ญ์—์„œ ์ €์žฅ์‹œ์ผฐ๋˜ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†์„ ๊ฒƒ์ด๋‹ค. ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์ „์ฒด์— ๊ฑธ์ณ ์œ ์ผํ•œ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด ์ „์—ญ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ ๊ณต์œ ๋ฅผ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋””์ž์ธ ํŒจํ„ด.. 2024. 6. 4.
[GoF ๋””์ž์ธ ํŒจํ„ด] - ํ”„๋กœํ† ํƒ€์ž… ํŒจํ„ด ๋ชจ๋“  ์ฝ”๋“œ๋Š” Swift๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ ์ƒํ™ฉ๋„คํŠธ์›Œํฌ ์ž‘์—… ๊ฐ™์ด ๋น„์šฉ์ด ๋งŽ์ด ๋“œ๋Š” ์ž‘์—…์„ ํ†ตํ•ด ์ƒ์„ฑ๋˜๋Š” ๊ฐ์ฒด๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ๋งŒ๋“ค๊ณ  ์‹ถ์„ ๋•Œ๊ฐ€ ์žˆ๋‹ค. ๊ฐ์ฒด๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ๋งŒ๋“ค๊ฒ ๋‹ค๊ณ  ๋™์ผํ•œ ๋„คํŠธ์›Œํฌ ์ž‘์—…์„ ๋ฐ˜๋ณตํ•ด์„œ ํ•˜๋Š” ๊ฒƒ์€ ๋‹น์—ฐํžˆ ๋น„ํšจ์œจ์ ์ด๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋‹น์—ฐํžˆ ์šฐ๋ฆฌ๋Š” ์•„๋ž˜ ์ฝ”๋“œ์™€ ๊ฐ™์ด ์ฒ˜์Œ ๋งŒ๋“ค์–ด์ง„ ์ธ์Šคํ„ด์Šค๋ฅผ ๋ณต์‚ฌ ํ•  ๊ฒƒ์ด๋‹ค. class Response { // JSON ๋ฐ์ดํ„ฐ์™€ ๊ด€๋ จ๋œ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋“ค...}let data = Network().requestAPI("https://127.0.0.1:8080/map/search")let response = Response(data)let copy1 = responselet copy2 = responselet copy3 = response  ํด๋ž˜์Šค.. 2024. 5. 31.
[GoF ๋””์ž์ธ ํŒจํ„ด] - ๋นŒ๋” ํŒจํ„ด Swift ์ฝ”๋“œ๊ฐ€ ๋ฉ”์ธ์ด์ง€๋งŒ, ๋ฌธ๋ฒ•์˜ ์ฐจ์ด๋กœ ์ธํ•ด ์„ค๋ช…์— ๋” ์ ํ•ฉํ•  ์ˆ˜ ์žˆ๋Š” Java ์ฝ”๋“œ๋„ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.  ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ๋งŒ์•ฝ ํ”„๋กœํผํ‹ฐ๊ฐ€ ๋งŽ๊ณ  ์ƒ์„ฑํ•  ๋•Œ ๊ผญ ํ•„์š”ํ•˜์ง€ ์•Š์€ ํ”„๋กœํผํ‹ฐ, ์ฆ‰ ์„ ํƒ์  ํ”„๋กœํผํ‹ฐ๊ฐ€ ์กด์žฌํ•œ๋‹ค๊ณ  ํ•  ๋•Œ ๊ฐ์ฒด๋ฅผ ์–ด๋–ป๊ฒŒ ์ƒ์„ฑํ•ด์•ผ ํ• ๊นŒ? ์ดˆ๊ธฐ์—๋Š” ์ƒ์„ฑ์ž๋ฅผ ์˜ค๋ฒ„๋กœ๋”ฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ๋งค๊ฐœ ๋ณ€์ˆ˜์— ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋Š” ์ ์ธต์  ์ƒ์„ฑ์ž ํŒจํ„ด์ด๋ผ๋Š” ๋ฐฉ์‹์œผ๋กœ ํ•ด๊ฒฐํ•˜์˜€๋‹ค. ์ ์ธต์  ์ƒ์„ฑ์ž ํŒจํ„ด ์ฝ”๋“œ ์˜ˆ์‹œ๋”๋ณด๊ธฐclass Hamburger { // ํ•„์ˆ˜ ํ”„๋กœํผํ‹ฐ private int bun; private int patty; // ์„ ํƒ์  ํ”„๋กœํผํ‹ฐ private int cheese = 0; private int lettuce = 0; private int tomato = 0; .. 2024. 5. 30.
[GoF ๋””์ž์ธ ํŒจํ„ด] - ์ถ”์ƒ ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ ํŒจํ„ด ๋ชจ๋“  ์ฝ”๋“œ๋Š” Swift๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ ์ƒํ™ฉ BlackView, BlackButton, YellowView, YellowButton ๊ฐ์ฒด๋“ค์„ ์กฐํ•ฉํ•˜์—ฌ ์œ„ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์€ ์กฐํ•ฉ์˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•ด ๋ณด์ž. ๊ฐ ๊ฐ์ฒด๋“ค์„ ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ ํŒจํ„ด์„ ์‚ฌ์šฉํ•ด์„œ ์ƒ์„ฑํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด BlackView์™€ YellowView๋Š” View์˜ Concrete Product๋กœ ํ•˜๊ณ  ColoredViewFactory๋ผ๋Š” Concrete Creator๋ฅผ ์ƒ์„ฑํ•  ๊ฒƒ์ด๊ณ , BlackButton๊ณผ YellowButton์€ Button์˜ Concrete Product, ColoredButtonFactory๋ฅผ Concrete Creator๋กœ ์ƒ์„ฑํ•  ๊ฒƒ์ด๋‹ค.  ํ•˜์ง€๋งŒ, ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ ํŒจํ„ด์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด, Bl.. 2024. 5. 28.