You Can Become A
๋ฆ๊ฒ ์์ํด๋ ๋๊ตฌ๋ ์ง ๋ ธ๋ ฅํ๋ฉด ๊ฐ๋ฐ์๊ฐ ๋ ์ ์์ด์ !
์๋ฐ ํ๋ก์
โ ๋๊ตฌ๋ ์ฝ๊ฒ ๋ฐฐ์ฐ๋ Dynamic Proxy ๋ค๋ฃจ๊ธฐ
Java Dynamic Proxy ์๋ฐ ํ๋ก๊ทธ๋๋ฐ์ ๋์์ธ ํจํฐ์ค ํ๋์ธ ํ๋ก์ ํจํด์ ์ด๊ธฐํ ์ง์ฐ, ์ ๊ทผ ์ ์ด, ๋ก๊น , ์บ์ฑ ๋ฑ, ๊ธฐ์กด ๋์ ์๋ณธ ๊ฐ์ฒด๋ฅผ ์์ ์์ด ์ถ๊ฐ ๋์ ๊ธฐ๋ฅ๋ค์ ๊ฐ๋ฏธํ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ ์ฝ๋ ํจํด์ด๋ค. ์ด ๋์์ธ ํจํด์ ์ ์ฉํ๋ฉด ๊ฐ๋ฐฉ ํ์ ์์น(OCP)์ ํจ๊ณผ๋ฅผ ์ป์ ์ ์์ด ์ฝ๋ ์์ ์์ด ์ ์ฐํ๊ฒ ํ์ฅ์ด ๊ฐ๋ฅํ์ฌ ์ ์ง๋ณด์ ์ธก๋ฉด์์ ํ๋ฌ์ค ํจ๊ณผ๋ฅผ ์ป์ ์ ์๋ค๋ ์ฅ์ ์ด ์๋ค. ํ์ง๋ง ํ๋ก์ ๋์์ธ ํจํด์ ๋์ ์๋ณธ ํด๋์ค ์๋งํผ ์ผ์ผํ ํ๋ก์ ํด๋์ค๋ฅผ ํ๋ํ๋ ๋ง๋ค์ด ์ค์ผํ๋ ์น๋ช ์ ์ธ ๋จ์ ์ด ์กด์ฌํ๋ค. ์ฆ, ํ๋ก์ ์ ์ฉ ๋์ ๊ฐ์ฒด๊ฐ 100๊ฐ๋ฉด ํ๋ก์ ๊ฐ์ฒด๋ 100๊ฐ ๋ง๋ค์ด์ค์ผ ํ๋ค๋ ๋ง์ด๋ค. ๋ฐ๋ผ์ ์ฝ๋๋์ด ๋ง์์ง๊ฒ ๋๊ณ ์ค๋ณต์ด ๋ฐ์ํ์ฌ ์ฝ๋์ ๋ณต์ก๋๊ฐ ์ฆ๊ฐํ๋ค๋ ํ๊ณ์ ์ด ์กด์ฌ..
๐ ํ๋ก์(Proxy) ํจํด - ์๋ฒฝ ๋ง์คํฐํ๊ธฐ
Proxy Pattern ํ๋ก์ ํจํด(Proxy Pattern)์ ๋์ ์๋ณธ ๊ฐ์ฒด๋ฅผ ๋๋ฆฌํ์ฌ ๋์ ์ฒ๋ฆฌํ๊ฒ ํจ์ผ๋ก์จ ๋ก์ง์ ํ๋ฆ์ ์ ์ดํ๋ ํ๋ ํจํด์ด๋ค. ํ๋ก์(Proxy)์ ์ฌ์ ์ ์ธ ์๋ฏธ๋ '๋๋ฆฌ์ธ'์ด๋ผ๋ ๋ป์ด๋ค. ์ฆ, ๋๊ตฐ๊ฐ์๊ฒ ์ด๋ค ์ผ์ ๋์ ์ํค๋ ๊ฒ์ ์๋ฏธํ๋๋ฐ, ์ด๋ฅผ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ ๋ชฉํด๋ณด๋ฉด ํด๋ผ์ด์ธํธ๊ฐ ๋์ ๊ฐ์ฒด๋ฅผ ์ง์ ์ฐ๋๊ฒ ์๋๋ผ ์ค๊ฐ์ ํ๋ก์(๋๋ฆฌ์ธ)์ ๊ฑฐ์ณ์ ์ฐ๋ ์ฝ๋ ํจํด์ด๋ผ๊ณ ๋ณด๋ฉด ๋๋ค. ๋ฐ๋ผ์ ๋์ ๊ฐ์ฒด(Subject)์ ๋ฉ์๋๋ฅผ ์ง์ ์คํํ๋ ๊ฒ์ด ์๋, ๋์ ๊ฐ์ฒด์ ์ ๊ทผํ๊ธฐ ์ ์ ํ๋ก์(Proxy) ๊ฐ์ฒด์ ๋ฉ์๋๋ฅผ ์ ๊ทผํ ํ ์ถ๊ฐ์ ์ธ ๋ก์ง์ ์ฒ๋ฆฌํ๋ค ์ ๊ทผํ๊ฒ ๋๋ค. ๊ทธ๋ฅ ๊ฐ์ฒด๋ฅผ ์ด์ฉํ๋ฉด ๋์ง, ์ด๋ ๊ฒ ๋ฒ๊ฑฐ๋กญ๊ฒ ์ค๊ณ ๋๋ฆฌ์๋ฅผ ํตํด ์ด์ฉํ๋ ๋ฐฉ์์ ์ทจํ๋ ์ด์ ๋, ๋์..