Strategy Pattern

์ „๋žต ํŒจํ„ด์€ ์ž์‹ ์˜ ๊ธฐ๋Šฅ ๋งฅ๋ฝ(context)์—์„œ ํ•„์š”์— ๋”ฐ๋ผ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ํ†ต์งธ๋กœ ์™ธ๋ถ€์— ๋ถ„๋ฆฌ์‹œํ‚ค๊ณ , ์ด๋ฅผ ๊ตฌํ˜„ํ•œ ๊ตฌ์ฒด์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํด๋ž˜์Šค๋ฅผ ํ•„์š”์— ๋”ฐ๋ผ ๋ฐ”๊ฟ”์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด์ด๋‹ค. ๋Œ€์ฒด ๊ฐ€๋Šฅํ•œ ์ „๋žต์ด๋ผ๊ณ  ๋ณด๊ธฐ๋•Œ๋ฌธ์— ์ „๋žต ํŒจํ„ด์ด๋ผ ๋ถˆ๋ฆฐ๋‹ค.

์—ฌ๊ธฐ์„œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€ ๋…๋ฆฝ์ ์ธ ์ฑ…์ž„์œผ๋กœ ๋ถ„๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•œ ๊ธฐ๋Šฅ์„ ์˜๋ฏธํ•œ๋‹ค.

์ฆ‰, ํ”„๋กœ์ ํŠธ์—์„œ ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚˜์ง€ ์•Š๋Š” ๋ถ€๋ถ„์—์„œ ๋ณ€๊ฒฝ์ด ๋ฐœ์ƒํ•˜๋Š” ๋ถ€๋ถ„์„ ์ฐพ์•„ ๋”ฐ๋กœ ์บก์Аํ™” ํ•œ๋‹ค๊ณ  ๋ณด๋ฉด๋œ๋‹ค.

์˜ˆ์‹œ

ํ† ๋น„์˜ ์Šคํ”„๋ง

UserDao๋Š” ์ „๋žต ํŒจํ„ด์˜ Context์— ํ•ด๋‹นํ•œ๋‹ค. Context๋Š” ์ž์‹ ์˜ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์ค‘์—์„œ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ DB์—ฐ๊ฒฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ConnectionMaker ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ์ •์˜ํ–ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋ฅผ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค์—์„œ ์ „๋žต์„ ๋ฐ”๊ฟ”๊ฐ€๋ฉด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ถ„๋ฆฌํ–ˆ๋‹ค.

Context(UserDao)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ(UserDaoTest)๋Š” Context๊ฐ€ ์‚ฌ์šฉํ•  ์ „๋žต(DConnectionMaker)์„ Context์˜ ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด ์ œ๊ณตํ•ด์ฃผ๋ฉฐ ์ „๋žตํŒจํ„ด์„ ์ž˜ ์ง€ํ‚ค๊ณ  ์žˆ๋Š” ์˜ˆ์‹œ์ด๋‹ค.

์—ฌ๊ธฐ์„œ ๋ณด๋ฉด UserDao๋Š” ๊ฐœ๋ฐฉ ํ์‡„ ์›์น™(OPC) ์„ ์ž˜ ๋”ฐ๋ฅด๊ณ  ์žˆ์œผ๋ฉฐ, ๊ฒฐํ•ฉ๋„๋Š” ๋‚ฎ์œผ๋ฉฐ, ์ „๋žตํŒจํ„ด์„ ์ ์šฉํ•œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฐธ๊ณ 

Last updated

Was this helpful?