์ธํŒŒ

You Can Become A

Pro

๋Šฆ๊ฒŒ ์‹œ์ž‘ํ•ด๋„ ๋ˆ„๊ตฌ๋“ ์ง€ ๋…ธ๋ ฅํ•˜๋ฉด ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ ์ˆ˜ ์žˆ์–ด์š” !

๋””์ž์ธ ํŒจํ„ด

๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค
GOF

๐Ÿ’  Chain Of Responsibility ํŒจํ„ด - ์™„๋ฒฝ ๋งˆ์Šคํ„ฐํ•˜๊ธฐ

Chain Of Responsibility Pattern ์ฑ…์ž„ ์—ฐ์‡„ ํŒจํ„ด(Chain Of Responsibility Pattern, COR)์€ ํด๋ผ์ด์–ดํŠธ์˜ ์š”์ฒญ์— ๋Œ€ํ•œ ์„ธ์„ธํ•œ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋‚˜์˜ ๊ฐ์ฒด๊ฐ€ ๋ชฝ๋•… ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ, ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ฒ˜๋ฆฌ ๊ฐ์ฒด๋“ค๋กœ ๋‚˜๋ˆ„๊ณ , ์ด๋“ค์„ ์‚ฌ์Šฌ(chain) ์ฒ˜๋Ÿผ ์—ฐ๊ฒฐํ•ด ์ง‘ํ•ฉ ์•ˆ์—์„œ ์—ฐ์‡„์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ํ–‰๋™ ํŒจํ„ด์ด๋‹ค. ์ด๋Ÿฌํ•œ ์ฒ˜๋ฆฌ ๊ฐ์ฒด๋“ค์„ ํ•ธ๋“ค๋Ÿฌ(handler)๋ผ๊ณ  ๋ถ€๋ฅด๋Š”๋ฐ, ์š”์ฒญ์„ ๋ฐ›์œผ๋ฉด ๊ฐ ํ•ธ๋“ค๋Ÿฌ๋Š” ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š”์ง€, ์—†์œผ๋ฉด ์ฒด์ธ์˜ ๋‹ค์Œ ํ•ธ๋“ค๋Ÿฌ๋กœ ์ฒ˜๋ฆฌ์— ๋Œ€ํ•œ ์ฑ…์ž„์„ ์ „๊ฐ€ํ•œ๋‹ค. ํ•œ๋งˆ๋””๋กœ ์ฑ…์ž„ ์—ฐ์‡„๋ผ๋Š” ๋ง์€ ์š”์ฒญ์— ๋Œ€ํ•œ ์ฑ…์ž„์„ ๋‹ค๋ฅธ ๊ฐ์ฒด์— ๋– ๋„˜๊ธด๋‹ค๋Š” ์†Œ๋ฆฌ์ด๋‹ค. ๋– ๋„˜๊ธด๋‹ค๊ณ  ํ•˜๋‹ˆ๊นŒ ๋ถ€์ •์ ์ธ ์˜๋ฏธ๋กœ ๋“ค๋ฆด์ˆ˜๋„ ์žˆ๊ฒ ์ง€๋งŒ, ์ด๋Ÿฌํ•œ ์ฒด์ธ ๊ตฌ์„ฑ์€ ํ•˜๋‚˜์˜ ๊ฐ์ฒด์— ์ฒ˜๋ฆฌ์— ๋Œ€ํ•œ ์ฑ…์ž„์„ ์š”์ฒญ์„ ๋ณด๋‚ด๋Š”..

category_image
์ธํŒŒ_
2023.03.22
(0)
GOF

๐Ÿ’  ๋ณตํ•ฉ์ฒด(Composite) ํŒจํ„ด - ์™„๋ฒฝ ๋งˆ์Šคํ„ฐํ•˜๊ธฐ

Composite Pattern ๋ณตํ•ฉ์ฒด ํŒจํ„ด(Composite Pattern)์€ ๋ณตํ•ฉ ๊ฐ์ฒด(Composite) ์™€ ๋‹จ์ผ ๊ฐ์ฒด(Leaf)๋ฅผ ๋™์ผํ•œ ์ปดํฌ๋„ŒํŠธ๋กœ ์ทจ๊ธ‰ํ•˜์—ฌ, ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ด ๋‘˜์„ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š๊ณ  ๋™์ผํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜๋Š” ๊ตฌ์กฐ ํŒจํ„ด์ด๋‹ค. ๋ณตํ•ฉ์ฒด ํŒจํ„ด์€ ์ „์ฒด-๋ถ€๋ถ„์˜ ๊ด€๊ณ„๋ฅผ ๊ฐ–๋Š” ๊ฐ์ฒด๋“ค ์‚ฌ์ด์˜ ๊ด€๊ณ„๋ฅผ ํŠธ๋ฆฌ ๊ณ„์ธต ๊ตฌ์กฐ๋กœ ์ •์˜ํ•ด์•ผ ํ• ๋•Œ ์œ ์šฉํ•˜๋‹ค. ์œˆ๋„์šฐ๋‚˜ ๋ฆฌ๋ˆ…์Šค์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ตฌ์กฐ๋ฅผ ๋– ์˜ฌ๋ ค๋ณด๋ฉด ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค. ํด๋”(๋””๋ ‰ํ† ๋ฆฌ) ์•ˆ์—๋Š” ํŒŒ์ผ์ด ๋“ค์–ด ์žˆ์„์ˆ˜๋„ ์žˆ๊ณ  ํŒŒ์ผ์„ ๋‹ด์€ ๋˜ ๋‹ค๋ฅธ ํด๋”๋„ ๋“ค์–ด์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ๋ณตํ•ฉ์ ์œผ๋กœ ๋‹ด์„์ˆ˜ ์žˆ๋‹ค ํ•ด์„œ Composite ๊ฐ์ฒด๋ผ๊ณ  ๋ถˆ๋ฆฌ์šด๋‹ค. ๋ฐ˜๋ฉด ํŒŒ์ผ์€ ๋‹จ์ผ ๊ฐ์ฒด ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ Leaf ๊ฐ์ฒด๋ผ๊ณ  ๋ถˆ๋ฆฌ์šด๋‹ค. ์ฆ‰ Leaf๋Š” ์ž์‹์ด ์—†๋‹ค. ๋ณตํ•ฉ์ฒด ํŒจํ„ด์€..

category_image
์ธํŒŒ_
2023.03.21
1
GOF

๐Ÿ’  ๊ฒฝ๋Ÿ‰(Flyweight) ํŒจํ„ด - ์™„๋ฒฝ ๋งˆ์Šคํ„ฐํ•˜๊ธฐ

Flyweight Pattern ํ”Œ๋ผ์ด์›จ์ดํŠธ ํŒจํ„ด(Flyweight Pattern)์€ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด ์ธ์Šคํ„ด์Šค๋ฅผ ๊ณต์œ ์‹œ์ผœ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์ตœ์†Œํ™”ํ•˜๋Š” ๊ตฌ์กฐ ํŒจํ„ด์ด๋‹ค. ๊ฐ„๋‹จํžˆ ๋งํ•˜๋ฉด ์บ์‹œ(Cache) ๊ฐœ๋…์„ ์ฝ”๋“œ๋กœ ํŒจํ„ดํ™” ํ•œ๊ฒƒ์œผ๋กœ ๋ณด๋ฉด ๋˜๋Š”๋ฐ, ์ž์ฃผ ๋ณ€ํ™”๋Š” ์†์„ฑ(extrinsit)๊ณผ ๋ณ€ํ•˜์ง€ ์•Š๋Š” ์†์„ฑ(intrinsit)์„ ๋ถ„๋ฆฌํ•˜๊ณ  ๋ณ€ํ•˜์ง€ ์•Š๋Š” ์†์„ฑ์„ ์บ์‹œํ•˜์—ฌ ์žฌ์‚ฌ์šฉํ•ด ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์„ ์ค„์ด๋Š” ๋ฐฉ์‹์ด๋‹ค. ๊ทธ๋ž˜์„œ ๋™์ผํ•˜๊ฑฐ๋‚˜ ์œ ์‚ฌํ•œ ๊ฐ์ฒด๋“ค ์‚ฌ์ด์— ๊ฐ€๋Šฅํ•œ ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋กœ ๊ณต์œ ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜์—ฌ ์ตœ์ ํ™”๋ฅผ ๋…ธ๋ฆฌ๋Š” ๊ฒฝ๋Ÿ‰ ํŒจํ„ด์ด๋ผ๊ณ ๋„ ๋ถˆ๋ฆฐ๋‹ค. Flyweight ๋‹จ์–ด ์˜๋ฏธ๋Š” Fly(๊ฐ€๋ฒผ์šด) + Weight(๋ฌด๊ฒŒ)๋ฅผ ๋œปํ•จ์œผ๋กœ์จ, ๋ณต์‹ฑ์˜ ์ฒด๊ธ‰์—์„œ ์œ ๋ž˜๋˜์—ˆ๋‹ค. ์ด๋ฅผ ์ž๋ฐ” ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ์ ‘๋ชฉํ•ด๋ณด๋ฉด ๋ชจ๋“  ๊ฐ์ฒด๋ฅผ ์ผ์ผํžˆ ์ธ์Šคํ„ด์Šคํ™”..

category_image
์ธํŒŒ_
2023.03.20
3
GOF +

๐Ÿ’  ์ •์  ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ ํŒจํ„ด (Static Factory Method)

Static Factory Method Pattern ์ •์  ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ(Static Factory Method) ํŒจํ„ด์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ตฌ์„ฑํ•œ Static Method๋ฅผ ํ†ตํ•ด ๊ฐ„์ ‘์ ์œผ๋กœ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด์ด๋‹ค. ์šฐ๋ฆฌ๋Š” ์ง€๊ธˆ๊นŒ์ง€ ๊ฐ์ฒด๋ฅผ ์ธ์Šคํ„ด์Šคํ™” ํ• ๋•Œ ์ง์ ‘์ ์œผ๋กœ ์ƒ์„ฑ์ž(Constructor)๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์ƒ์„ฑํ•˜์˜€๋Š”๋ฐ, ๋ณ„๋„์˜ ๊ฐ์ฒด ์ƒ์„ฑ์˜ ์—ญํ• ์„ ํ•˜๋Š” ํด๋ž˜์Šค ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ๊ฐ„์ ‘์ ์œผ๋กœ ๊ฐ์ฒด ์ƒ์„ฑ์„ ์œ ๋„ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ์ •์  ๋ฉ”์„œ๋“œ๋ฅผ ํ†ต์นญ์ ์œผ๋กœ ์ •์  ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ ํŒจํ„ด์ด๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๊ฒƒ์ด๋‹ค. class Book { private String title; // ์ƒ์„ฑ์ž๋ฅผ privateํ™” ํ•˜์—ฌ ์™ธ๋ถ€์—์„œ ์ƒ์„ฑ์ž ํ˜ธ์ถœ ์ฐจ๋‹จ private Book(String title) { this.title ..

category_image
์ธํŒŒ_
2023.03.17
2
GOF +

๐Ÿ’  Template Callback ๋””์ž์ธ ํŒจํ„ด

Template Callback Pattern ํƒฌํ”Œ๋ฆฟ ์ฝœ๋ฐฑ ํŒจํ„ด(Template Callback Pattern)์€ ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ DI(Dependency injection) ์˜์กด์„ฑ ์ฃผ์ž…์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํŠน๋ณ„ํ•œ ์ „๋žต ํŒจํ„ด์ด๋‹ค. ์Šคํ”„๋ง์˜ JdbcTemplate, RestTemplate, TransactionTemplate, RedisTemplate๊ณผ ๊ฐ™์€๊ณณ์— ์‚ฌ์šฉ๋œ๋‹ค. ํ•œ๋งˆ๋””๋กœ GOF ๋””์ž์ธ ํŒจํ„ด์€ ์•„๋‹ˆ๊ณ  ์ „๋žต ํŒจํ„ด์˜ ํ™•์žฅํŒ ์ •๋„๋กœ ๋ณด๋ฉด ๋œ๋‹ค. ๊ธฐ์กด์˜ ์ „๋žต ํŒจํ„ด์€ ๋ณ€ํ™”๋˜๋Š” ์ „๋žต ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ถ€๋ถ„์„ ์ปดํŒŒ์ผ ํƒ€์ž„์—์„œ ํด๋ž˜์Šค๋กœ ๋งŒ๋“ ๋’ค ๊ตฌํ˜„์ฒด๋ฅผ ์ฃผ์ž…ํ•ด ์ฃผ์–ด์•ผ ๋˜์ง€๋งŒ, ํ…œํ”Œ๋ฆฟ ์ฝœ๋ฐฑ ํŒจํ„ด์€ ๋Ÿฐํƒ€์ž„ ํƒ€์ž„์—์„œ ์ต๋ช… ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•ด ๋™์ ์œผ๋กœ ์ „๋žต ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ฃผ์ž…ํ•œ๋‹ค. ์šฉ์–ด๋„ ๊ทธ๋ƒฅ ์ „๋žต ํŒจํ„ด์—์„œ์˜ ์ปจํ…์ŠคํŠธ(Context)๋ฅผ ..

category_image
์ธํŒŒ_
2023.03.17
(0)
GOF

๐Ÿ’  ๋นŒ๋”(Builder) ํŒจํ„ด - ์™„๋ฒฝ ๋งˆ์Šคํ„ฐํ•˜๊ธฐ

Builder Pattern ๋นŒ๋” ํŒจํ„ด(Builder Pattern)์€ ๋ณต์žกํ•œ ๊ฐ์ฒด์˜ ์ƒ์„ฑ ๊ณผ์ •๊ณผ ํ‘œํ˜„ ๋ฐฉ๋ฒ•์„ ๋ถ„๋ฆฌํ•˜์—ฌ ๋‹ค์–‘ํ•œ ๊ตฌ์„ฑ์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“œ๋Š” ์ƒ์„ฑ ํŒจํ„ด์ด๋‹ค. ์ƒ์„ฑ์ž์— ๋“ค์–ด๊ฐˆ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ๋ฉ”์„œ๋“œ๋กœ ํ•˜๋‚˜ํ•˜๋‚˜ ๋ฐ›์•„๋“ค์ด๊ณ  ๋งˆ์ง€๋ง‰์— ํ†ตํ•ฉ ๋นŒ๋“œํ•ด์„œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ์‚ฌ๋ก€๋กœ ์ˆ˜์ œ ํ–„๋ฒ„๊ฑฐ๋ฅผ ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์ˆ˜์ œ ํ–„๋ฒ„๊ฑฐ๋ฅผ ์ฃผ๋ฌธํ• ๋•Œ ๋นต์ด๋‚˜ ํŒจํ‹ฐ ๋“ฑ ์†์žฌ๋ฃŒ๋“ค์€ ์ฃผ๋ฌธํ•˜๋Š” ์‚ฌ๋žŒ์ด ๋งˆ์Œ๋Œ€๋กœ ๊ฒฐ์ •๋œ๋‹ค. ์–ด๋Š ์‚ฌ๋žŒ์€ ์น˜์ฆˆ๋ฅผ ๋นผ๋‹ฌ๋ผ๊ณ  ํ• ์ˆ˜ ์žˆ๊ณ  ์–ด๋Š ์‚ฌ๋žŒ์€ ํ† ๋งˆํ† ๋ฅผ ๋นผ๋‹ฌ๋ผ๊ณ  ํ• ์ˆ˜ ์žˆ๋‹ค. ์ด์ฒ˜๋Ÿผ ์„ ํƒ์  ์†์žฌ๋ฃŒ๋“ค์„ ๋ณด๋‹ค ์œ ์—ฐํ•˜๊ฒŒ ๋ฐ›์•„ ๋‹ค์–‘ํ•œ ํƒ€์ž…์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ• ์ˆ˜ ์žˆ์–ด, ํด๋ž˜์Šค์˜ ์„ ํƒ์  ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋งŽ์€ ์ƒํ™ฉ์—์„œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋œ๋‹ค. ๋นŒ๋” ํŒจํ„ด ํƒ„์ƒ ๋ฐฐ๊ฒฝ ์ ์ธต์  ์ƒ์„ฑ์ž ํŒจํ„ด ์ ์ธต์  ์ƒ์„ฑ์ž ํŒจํ„ด(Telesc..

category_image
์ธํŒŒ_
2023.03.16
5
GOF

๐Ÿ’  ํผ์‚ฌ๋“œ(Facade) ํŒจํ„ด - ์™„๋ฒฝ ๋งˆ์Šคํ„ฐํ•˜๊ธฐ

Facade Pattern ํผ์‚ฌ๋“œ ํŒจํ„ด(Facade Pattern)์€ ์‚ฌ์šฉํ•˜๊ธฐ ๋ณต์žกํ•œ ํด๋ž˜์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•ด ์‚ฌ์šฉํ•˜๊ธฐ ํŽธํ•˜๊ฒŒ ๊ฐ„ํŽธํ•œ ์ธํ„ฐํŽ˜์ด์Šค(API)๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ์กฐ ํŒจํ„ด ์ด๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๊ฐ ํด๋ž˜์Šค์™€ ๋ฉ”์„œ๋“œ๋“ค์ด ์–ด๋–ค ๋ชฉ์ ์˜ ๋™์ž‘์ธ์ง€ ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ค์›Œ ๋ฐ”๋กœ ๊ฐ€์ ธ๋‹ค ์“ฐ๊ธฐ์—๋Š” ๋‚œ์ด๋„๊ฐ€ ๋†’์„๋•Œ, ์ด์— ๋Œ€ํ•œ ์ ์ ˆํ•œ ๋„ค์ด๋ฐ๊ณผ ์ •๋ฆฌ๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋กœ ํ•˜์—ฌ๊ธˆ ์‰ฝ๊ฒŒ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋‹ค๋ฃฐ์ˆ˜ ์žˆ๋„๋ก ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ, ์šฐ๋ฆฌ๊ฐ€ ๊ต์ œ๋ฅผ ๋ณด๊ณ  ํ•„๊ธฐ๋…ธํŠธ์— ์žฌ์ •๋ฆฌ๋ฅผ ํ•˜๋“ฏ์ด ํด๋ž˜์Šค๋ฅผ ์žฌ์ •๋ฆฌํ•˜๋Š” ํ–‰์œ„๋กœ ๋ณด๋ฉด ๋œ๋‹ค. ๋ณธ๋ž˜ ํ”„๋กœ๊ทธ๋žจ์ด๋ผ๋Š” ๊ฒƒ์€ ์—…๋ฐ์ดํŠธ๋ฅผ ํ†ตํ•ด ์ ์  ์ปค์ง€๊ฒŒ ๋œ๋‹ค. ๋ฒ„์ „์ด ์˜ฌ๋ผ๊ฐˆ์ˆ˜๋ก ๋งŽ์€ ํด๋ž˜์Šค๋“ค์ด ๋งŒ๋“ค์–ด์ ธ ์„œ๋กœ ๊ด€๊ณ„๋ฅผ ๋งบ์œผ๋ฉด์„œ ์ ์  ๋ณต์žกํ•ด์ง€๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ž˜์„œ ์ปค๋‹ค๋ž€ ์†”๋ฃจ์…˜์„ ๊ตฌ์„ฑํ•˜๋ ค๋ฉด ์ƒํ˜ธ ๊ด€๋ จ๋œ ๋งŽ์€ ํด๋ž˜์Šค..

category_image
์ธํŒŒ_
2023.03.14
2
GOF

๐Ÿ’  ๋ฐ˜๋ณต์ž(Iterator) ํŒจํ„ด - ์™„๋ฒฝ ๋งˆ์Šคํ„ฐํ•˜๊ธฐ

Iterator Pattern ๋ฐ˜๋ณต์ž(Iterator) ํŒจํ„ด์€ ์ผ๋ จ์˜ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์— ๋Œ€ํ•˜์—ฌ ์ˆœ์ฐจ์ ์ธ ์ ‘๊ทผ(์ˆœํšŒ)์„ ์ง€์›ํ•˜๋Š” ํŒจํ„ด์ด๋‹ค. ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์ด๋ž€ ๊ฐ์ฒด๋“ค์„ ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์–ด ์ž๋ฃŒ์˜ ๊ตฌ์กฐ๋ฅผ ์ทจํ•˜๋Š” ์ปฌ๋ ‰์…˜์„ ๋งํ•œ๋‹ค. ๋Œ€ํ‘œ์ ์ธ ์ปฌ๋ ‰์…˜์œผ๋กœ ํ•œ๋ฒˆ์ฏค์€ ๋“ค์–ด๋ณธ ๋ฆฌ์ŠคํŠธ๋‚˜ ํŠธ๋ฆฌ, ๊ทธ๋ž˜ํ”„, ํ…Œ์ด๋ธ” ..๋“ฑ์ด ์žˆ๋‹ค. ๋ณดํ†ต ๋ฐฐ์—ด์ด๋‚˜ ๋ฆฌ์ŠคํŠธ ๊ฐ™์€ ๊ฒฝ์šฐ ์ˆœ์„œ๊ฐ€ ์—ฐ์†์ ์ธ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ„๋‹จํ•œ for๋ฌธ์„ ํ†ตํ•ด ์ˆœํšŒํ• ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ•ด์‹œ, ํŠธ๋ฆฌ์™€ ๊ฐ™์€ ์ปฌ๋ ‰์…˜์€ ๋ฐ์ดํ„ฐ ์ €์žฅ ์ˆœ์„œ๊ฐ€ ์ •ํ•ด์ง€์ง€ ์•Š๊ณ  ์ ์žฌ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐ ์š”์†Œ๋“ค์„ ์–ด๋–ค ๊ธฐ์ค€์œผ๋กœ ์ ‘๊ทผํ•ด์•ผ ํ• ์ง€ ์• ๋งคํ•ด์ง„๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด ์•„๋ž˜์™€ ๊ฐ™์ด ํŠธ๋ฆฌ ๊ตฌ์กฐ๊ฐ€ ์žˆ๋‹ค๋ฉด ์–ด๋–ค ์ƒํ™ฉ์—์„  ๊นŠ์ด(์„ธ๋กœ)๋ฅผ ์šฐ์„ ์œผ๋กœ ์ˆœํšŒ ํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ๊ณ , ๋„ˆ๋น„(๊ฐ€๋กœ)๋ฅผ ์šฐ์„ ์œผ๋กœ ์ˆœํšŒํ• ์ˆ˜๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด์ฒ˜๋Ÿผ ..

category_image
์ธํŒŒ_
2023.03.13
1
GOF

๐Ÿ’  ์˜ต์ €๋ฒ„(Observer) ํŒจํ„ด - ์™„๋ฒฝ ๋งˆ์Šคํ„ฐํ•˜๊ธฐ

Observer Pattern ์˜ต์ €๋ฒ„ ํŒจํ„ด(Observer Pattern)์€ ์˜ต์ €๋ฒ„(๊ด€์ฐฐ์ž)๋“ค์ด ๊ด€์ฐฐํ•˜๊ณ  ์žˆ๋Š” ๋Œ€์ƒ์ž์˜ ์ƒํƒœ๊ฐ€ ๋ณ€ํ™”๊ฐ€ ์žˆ์„ ๋•Œ๋งˆ๋‹ค ๋Œ€์ƒ์ž๋Š” ์ง์ ‘ ๋ชฉ๋ก์˜ ๊ฐ ๊ด€์ฐฐ์ž๋“ค์—๊ฒŒ ํ†ต์ง€ํ•˜๊ณ , ๊ด€์ฐฐ์ž๋“ค์€ ์•Œ๋ฆผ์„ ๋ฐ›์•„ ์กฐ์น˜๋ฅผ ์ทจํ•˜๋Š” ํ–‰๋™ ํŒจํ„ด์ด๋‹ค. ์˜ต์ €๋ฒ„ ํŒจํ„ด์€ ์—ฌํƒ€ ๋‹ค๋ฅธ ๋””์ž์ธ ํŒจํ„ด๋“ค๊ณผ ๋‹ค๋ฅด๊ฒŒ ์ผ๋Œ€๋‹ค(one-to-many) ์˜์กด์„ฑ์„ ๊ฐ€์ง€๋Š”๋ฐ, ์ฃผ๋กœ ๋ถ„์‚ฐ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋ง ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. Pub/Sub(๋ฐœํ–‰/๊ตฌ๋…) ๋ชจ๋ธ๋กœ๋„ ์•Œ๋ ค์ ธ ์žˆ๊ธฐ๋„ ํ•˜๋‹ค. ์ด ํŒจํ„ด์„ ์ดํ•ดํ•˜๋Š”๋ฐ ์žˆ์–ด ๋‰ด์Šค ํ”ผ๋“œ๋‚˜ ์œ ํŠœ๋ธŒ๋กœ ๋น„์œ ํ•ด๋ณด๋ฉด ์‰ฝ๋‹ค. ์œ ํŠœ๋ธŒ ์ฑ„๋„์€ ๋ฐœํ–‰์ž(Subject)๊ฐ€ ๋˜๊ณ  ๊ตฌ๋…์ž๋“ค์€ ๊ด€์ฐฐ์ž(Observer)๊ฐ€ ๋˜๋Š” ๊ตฌ์กฐ๋กœ ๋ณด๋ฉด ๋œ๋‹ค. ์‹ค์ œ๋กœ ์œ ํŠœ๋ฒ„๊ฐ€ ์˜์ƒ์„ ์˜ฌ๋ฆฌ๋ฉด ์—ฌ๋Ÿฌ๋ช…์˜ ๊ตฌ๋…์ž๋“ค์€ ๋ชจ๋‘ ์˜์ƒ์ด ์˜ฌ๋ผ์™”๋‹ค๋Š” ์•Œ๋ฆผ..

category_image
์ธํŒŒ_
2023.01.27
1
GOF

๐Ÿ’  ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ(Decorator) ํŒจํ„ด - ์™„๋ฒฝ ๋งˆ์Šคํ„ฐํ•˜๊ธฐ

Decorator Pattern ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ํŒจํ„ด(Decorator Pattern)์€ ๋Œ€์ƒ ๊ฐ์ฒด์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ ํ™•์žฅ์ด๋‚˜ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ• ๋•Œ ๊ฐ์ฒด์˜ ๊ฒฐํ•ฉ์„ ํ†ตํ•ด ์„œ๋ธŒํด๋ž˜์‹ฑ ๋Œ€์‹  ์“ธ์ˆ˜ ์žˆ๋Š” ์œ ์—ฐํ•œ ๋Œ€์•ˆ ๊ตฌ์กฐ ํŒจํ„ด์ด๋‹ค. Decorator์„ ํ•ด์„ํ•˜์ž๋ฉด '์žฅ์‹์ž' ๋ผ๋Š” ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋ฐ, ๋งˆ์น˜ ๊ธฐ๋ณธ ์ œํ’ˆ์— ํฌ์žฅ์ง€๋‚˜ ์™ธ๋ถ€ ๋””์ž์ธ์„ ์‚ด์ง ๋ณ€๊ฒฝํ•ด ์คŒ์œผ๋กœ์จ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ๋ถ€์—ฌํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ด, ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์›๋ณธ ๊ฐ์ฒด์— ๋Œ€ํ•ด์„œ ๋ฌด์–ธ๊ฐ€๋ฅผ ์žฅ์‹ํ•˜์—ฌ ๋” ๋ฉ‹์ง„ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ช…์นญ์ด ๋ถ™์—ˆ๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค. ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ํŒจํ„ด์„ ์ด์šฉํ•˜๋ฉด ํ•„์š”ํ•œ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์˜ ์กฐํ•ฉ์„ ๋Ÿฐํƒ€์ž„์—์„œ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฐ์ฝ”๋ ˆ์ดํ„ฐํ•  ๋Œ€์ƒ ๊ฐ์ฒด๋ฅผ ์ƒˆ๋กœ์šด ํ–‰๋™๋“ค์„ ํฌํ•จํ•œ ํŠน์ˆ˜ ์žฅ์‹์ž ๊ฐ์ฒด์— ๋„ฃ์–ด์„œ ํ–‰๋™๋“ค์„ ํ•ด๋‹น ์žฅ์‹์ž ๊ฐ์ฒด๋งˆ๋‹ค ..

category_image
์ธํŒŒ_
2023.01.26
1
GOF

๐Ÿ’  ์–ด๋Œ‘ํ„ฐ(Adaptor) ํŒจํ„ด - ์™„๋ฒฝ ๋งˆ์Šคํ„ฐํ•˜๊ธฐ

Adaptor Pattern ์–ด๋Œ‘ํ„ฐ ํŒจํ„ด(Adaptor Pattern) ์ด๋ž€ ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ํด๋ž˜์Šค๋ฅผ ์–ด๋Œ‘ํ„ฐ๋กœ์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ตฌ์กฐ ํŒจํ„ด์ด๋‹ค. ์–ด๋Œ‘ํ„ฐ๋Š” ์šฐ๋ฆฌ ์ฃผ๋ณ€์—๋„ ๋งŽ์ด ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์œผ๋กœ์„œ, ๋Œ€ํ‘œ์ ์œผ๋กœ 110V ์ „์šฉ ๊ฐ€์ „์ œํ’ˆ์— 220V ์–ด๋Œ‘ํ„ฐ๋ฅผ ๋ผ์›Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฑธ ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ์„œ๋กœ ํ˜ธํ™˜์ด ๋˜์ง€ ์•Š์€ ๋‹จ์ž๋ฅผ ์–ด๋Œ‘ํ„ฐ๋กœ ํ˜ธํ™˜์‹œ์ผœ ์ž‘๋™์‹œํ‚ค๊ฒŒ๋” ํ•˜๋Š” ๊ฒƒ์ด ์–ด๋Œ‘ํ„ฐ์˜ ์—ญํ• ์ธ ๊ฒƒ์ด๋‹ค. ์ด๋ฅผ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ์ ‘๋ชฉํ•ด๋ณด๋ฉด, ํ˜ธํ™˜์„ฑ์ด ์—†๋Š” ์ธํ„ฐํŽ˜์ด์Šค ๋•Œ๋ฌธ์— ํ•จ๊ป˜ ๋™์ž‘ํ•  ์ˆ˜ ์—†๋Š” ํด๋ž˜์Šค๋“ค์„ ํ•จ๊ป˜ ์ž‘๋™ํ•ด์ฃผ๋„๋ก ๋ณ€ํ™˜ ์—ญํ• ์„ ํ•ด์ฃผ๋Š” ํ–‰๋™ ํŒจํ„ด์ด๋ผ๊ณ  ๋ณด๋ฉด ๋œ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด ๊ธฐ์กด์— ์žˆ๋Š” ์‹œ์Šคํ…œ์— ์ƒˆ๋กœ์šด ์จ๋“œํŒŒํ‹ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ๊ฑฐ๋‚˜, Legacy ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒˆ๋กœ์šด ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๊ต์ฒดํ•˜๋Š” ๊ฒฝ์šฐ์— ์–ด๋Œ‘ํ„ฐ ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ์˜..

category_image
์ธํŒŒ_
2023.01.25
3
GOF

๐Ÿ’  ํ”„๋ก์‹œ(Proxy) ํŒจํ„ด - ์™„๋ฒฝ ๋งˆ์Šคํ„ฐํ•˜๊ธฐ

Proxy Pattern ํ”„๋ก์‹œ ํŒจํ„ด(Proxy Pattern)์€ ๋Œ€์ƒ ์›๋ณธ ๊ฐ์ฒด๋ฅผ ๋Œ€๋ฆฌํ•˜์—ฌ ๋Œ€์‹  ์ฒ˜๋ฆฌํ•˜๊ฒŒ ํ•จ์œผ๋กœ์จ ๋กœ์ง์˜ ํ๋ฆ„์„ ์ œ์–ดํ•˜๋Š” ํ–‰๋™ ํŒจํ„ด์ด๋‹ค. ํ”„๋ก์‹œ(Proxy)์˜ ์‚ฌ์ „์ ์ธ ์˜๋ฏธ๋Š” '๋Œ€๋ฆฌ์ธ'์ด๋ผ๋Š” ๋œป์ด๋‹ค. ์ฆ‰, ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ์–ด๋–ค ์ผ์„ ๋Œ€์‹  ์‹œํ‚ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋Š”๋ฐ, ์ด๋ฅผ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ์ ‘๋ชฉํ•ด๋ณด๋ฉด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋Œ€์ƒ ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ์“ฐ๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ์ค‘๊ฐ„์— ํ”„๋ก์‹œ(๋Œ€๋ฆฌ์ธ)์„ ๊ฑฐ์ณ์„œ ์“ฐ๋Š” ์ฝ”๋“œ ํŒจํ„ด์ด๋ผ๊ณ  ๋ณด๋ฉด ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ๋Œ€์ƒ ๊ฐ์ฒด(Subject)์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ์ง์ ‘ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ, ๋Œ€์ƒ ๊ฐ์ฒด์— ์ ‘๊ทผํ•˜๊ธฐ ์ „์— ํ”„๋ก์‹œ(Proxy) ๊ฐ์ฒด์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์ ‘๊ทผํ•œ ํ›„ ์ถ”๊ฐ€์ ์ธ ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•œ๋’ค ์ ‘๊ทผํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ƒฅ ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•˜๋ฉด ๋˜์ง€, ์ด๋ ‡๊ฒŒ ๋ฒˆ๊ฑฐ๋กญ๊ฒŒ ์ค‘๊ณ„ ๋Œ€๋ฆฌ์ž๋ฅผ ํ†ตํ•ด ์ด์šฉํ•˜๋Š” ๋ฐฉ์‹์„ ์ทจํ•˜๋Š” ์ด์œ ๋Š”, ๋Œ€์ƒ..

category_image
์ธํŒŒ_
2023.01.12
9