design 4

[pattern] Command pattern

๋””์ž์ธํŒจํ„ด ์Šคํ„ฐ๋””์˜ ๋งˆ์ง€๋ง‰์ธ Command pattern ์ž…๋‹ˆ๋‹ค. ์ด 5๋ถ„ ์ค‘ ๋ฌด๋ ค 3๋ถ„์ด (์ € ํฌํ•จใ…Žใ…Ž) ๋ธ”๋กœ๊ทธ๋ฅผ ์šด์˜ํ–ˆ๋‹ค๋Š”(์—ˆ๋‹ค)๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ถ„๋“ค์˜ ๋ธ”๋กœ๊ทธ๋ฅผ ๊ตฌ๋…ํ•˜๊ณ  gitHub๋„ follow๋ฅผ ํ•  ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ ์Šคํ„ฐ๋””๋กœ ๋””์ž์ธํŒจํ„ด์˜ ๋งŽ์€ ๋ถ€๋ถ„์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์–ด ์•„์ฃผ ์ข‹์•˜์Šต๋‹ˆ๋‹ค. ์ฒ˜์Œ Factory pattern์„ ๋ณด๋Š”๋ฐ ์ •๋ง ํ•˜๋‚˜๋„ ์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š์•˜์—ˆ๊ฑฐ๋“ ์š”. ์ง€๊ธˆ์€ ๊ทธ๋ž˜๋„ ์–ด๋Š์ •๋„ pattern์— ๋Œ€ํ•œ ๊ฐœ๋…์„ ๋ฐ›์•„ ๋“ค์ผ ์ค€๋น„ ์ •๋„๋Š” ๋œ ๋“ฏ ํ•ด์„œ ๋งŽ์ด ๋ฟŒ๋“ฏํ•ฉ๋‹ˆ๋‹ค. ์•ž์œผ๋กœ๋„ ๊ณ„์†ํ•ด์„œ ๋‹ค์–‘ํ•œ ์Šคํ„ฐ๋””๋ฅผ ํ†ตํ•ด ์ข€ ๋” ๋ฐœ์ „ํ•˜๊ณ  ๋‹ค์–‘ํ•œ ๋ถ„๋“ค์„ ๋งŒ๋‚˜ ๊ฒฝํ—˜๋“ค์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค Command ํŒจํ„ด ์ปค๋งจ๋“œ ํŒจํ„ด์€ ํŠน์ • ๊ธฐ๋Šฅ๋“ค์„ ์บก์Šํ™” ์‹œํ‚ค๋Š” ํŒจํ„ด์ž…๋‹ˆ๋‹ค. ๋ณดํ†ต ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ ๋‹ค์–‘ํ•œ..

CS 2022.06.25

[pattern]Decorator pattern

[pattern]Decorator pattern ์ด ๋ธ”๋กœ๊ทธ ๊ธ€์€ [Design Pattern] ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ํŒจํ„ด์ด๋ž€ ๊ธ€์„ ๋‚˜๋ฆ„๋Œ€๋กœ ๊ฐ„๋žตํ•˜๊ฒŒ ๊ฐ„์ถ”๋ ค์„œ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ์‚ฌํ•ญ์ด ๊ถ๊ธˆํ•˜์‹  ๋ถ„๋“ค์€ ์œ„์˜ ๋งํฌ ํ˜น์€ ํ•˜๋‹จ์˜ References๋ฅผ ํ™•์ธํ•ด ์ฃผ์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค. Decorator Pattern ๊ฐ์ฒด์˜ ๊ฒฐํ•ฉ ์„ ํ†ตํ•ด ๊ธฐ๋Šฅ์„ ๋™์ ์œผ๋กœ ์œ ์—ฐํ•˜๊ฒŒ ํ™•์žฅ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ํŒจํ„ด์œผ๋กœ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์˜ ์ข…๋ฅ˜๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ์— ๊ฐ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ Decorator ํด๋ž˜์Šค๋กœ ์ •์˜ ํ•œ ํ›„ ํ•„์š”ํ•œ Decorator ๊ฐ์ฒด๋ฅผ ์กฐํ•ฉํ•จ์œผ๋กœ์จ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์˜ ์กฐํ•ฉ์„ ์„ค๊ณ„ ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ํŒจํ„ด์„ ํ™œ์šฉํ•˜๋ฉด ํ•„์š” ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์˜ ์กฐํ•ฉ์„ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ๊ตฌ์กฐ(Decorator๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ์‹œ) ..

CS 2022.05.15

[pattern]Builder pattern ์•Œ์•„๋ณด๊ธฐ

builder ํŒจํ„ด์„ ์˜ˆ์ „์—๋„ ๋ช‡๋ฒˆ ๋“ค์–ด๋ณด๊ธด ํ–ˆ์ง€๋งŒ ๊ด€์‹ฌ์žˆ๊ฒŒ ์‚ดํŽด ๋ณธ ๊ฒƒ์€ ํ•œ๋‘๋‹ฌ? ์ „์œผ๋กœ ์˜ค๋ž˜๋˜์ง€ ์•Š์•˜๋„ค์š”. ์ €๋Š” builder ํŒจํ„ด์ด๋ž€ ๊ฐœ๋…์ด ์ต์ˆ™ํ•ด์ง€๊ธฐ๊นŒ์ง€ ํ•œ๋‹ฌ ์ •๋„์˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ ๋“ฏ ํ•ฉ๋‹ˆ๋ฐใ… ใ… (๋ฐ”๋ณด...) ์‹œ๊ฐ„๋‚ ๋•Œ ์งฌ์งฌ์ด ๊ฒ€์ƒ‰ํ•ด ๋ณด๊ณ  ๋ชจ๋ฅด๋Š” ๋ถ€๋ถ„์„ ์ฃผ๋ณ€์— ๋ฌผ์–ด๊ฐ€๋ฉด์„œ ์กฐ๊ธˆ์”ฉ ์ต์ˆ™ํ•ด ์ง„ ๋“ฏ ํ•ฉ๋‹ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” ์ „ํ˜€ ์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š์•„ ์ฐธ ๊ณ ์ƒ์„ ๋งŽ์ด ํ–ˆ์—ˆ๋Š”๋ฐ ๋ง์ด์ฃ !! ํšŒ์‚ฌ์—์„œ๋„ ์ง์ ‘ ์จ๋ณด๊ณ  (builder ํŒจํ„ด ์ž‘์„ฑ์„ ํšŒ์‚ฌ์—์„œ ์˜ค๋Š˜ ์ฒ˜์Œ ํ•ด๋ณธ๊ฑด ๋น„๋ฐ€ใ…Žใ…Ž) ๋ช‡๋ฒˆ ๋ณด๋‹ค๋ณด๋‹ˆ ์Šฌ์Šฌ ์ต์ˆ™ํ•ด ์ ธ์„œ ๊ธ€์„ ์ž‘์„ฑํ•ด์„œ ์ •๋ฆฌํ•ด ๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋ถ€์กฑํ•œ ๋ถ€๋ถ„์ด ์žˆ๋‹ค๋ฉด ๋ฐ”๋กœ๋ฐ”๋กœ ์ˆ˜์ • ๋ฐ˜์˜ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค~ ๋ฐœ๋‹จ ์ถœ์ฒ˜: https://refactoring.guru/design-patterns/builder ์œ„์˜ ์ด๋ฏธ์ง€์™€ ๊ฐ™์ด ํ•˜..

CS 2022.04.23

[DesignPattern] Factory pattern ์•Œ์•„๋ณด๊ธฐ

ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์‹œ์ž‘ํ•œ์ง€ ์–ด๋Š๋ง 1๋…„์ด ๋„˜์—ˆ๋„ค์š”. ๊ทธ๋ ‡์ง€๋งŒ ์ œ๋Œ€๋กœ๋œ ๋””์ž์ธ ํŒจํ„ด์— ๋Œ€ํ•œ ๊ณต๋ถ€๋ฅผ ํ•ด๋ณธ ์ ์ด ์—†๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์–ด ์Šคํ„ฐ๋””๋ฅผ ์‹œ์ž‘ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ค‘ ์ฒซ์ฃผ์ œ์ธ factoryMethod pattern์„ ๊ณต๋ถ€ํ•˜๋ ค๋‹ค ๋ณด๋‹ˆ factory pattern์ด ๋‹ค์–‘ํ•œ pattern(Singleton, Builder)์˜ base๊ฐ€ ๋˜๋”๊ตฐ์š”. ๊ทธ๋ž˜์„œ factory pattern์— ๋Œ€ํ•ด ์šฐ์„ ์ ์œผ๋กœ ์ •๋ฆฌ๋ฅผ ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋“ค์–ด๊ฐ€๊ธฐ์— ์•ž์„œ ์ถ”์ƒํด๋ž˜์Šค์™€ ์ถ”์ƒ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•ด ์•Œ๊ณ  ๊ฐ€๋ฉด ์ดํ•ดํ•˜๊ธฐ ์กฐ๊ธˆ ๋” ํŽธํ•  ๋“ฏ ํ•ฉ๋‹ˆ๋‹ค. ์ •๋ฆฌํ•œ ์ฝ”๋“œ๊ฐ€ ๋ณด๊ณ ์‹ถ์œผ์‹  ๋ถ„์€ ์•„๋ž˜ ๋งํฌ๋ฅผ ํ™•์ธํ•ด ์ฃผ์„ธ์š”. GitHub: Factory pattern ํŒจํ‚ค์ง€ Factory pattern Client ์ธก์—์„œ factory๋ฅผ ํ†ตํ•ด ๊ฐ„๋‹จํ•˜๊ฒŒ ์›ํ•˜๋Š” Object..

CS 2022.04.17
728x90
๋ฐ˜์‘ํ˜•