Proxy ํจํด
Proxy ํจํด ์๊ฐ
- ์ด๋ค ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ๋ ๊ฐ์ฒด๋ฅผ ์ง์ ์ ์ผ๋ก ์ฐธ์กฐํ๋ ๊ฒ์ด ์๋ ํด๋น ๊ฐ์ฒด๋ฅผ ๋๋ฆฌํ๋ ๊ฐ์ฒด์ธ ํ๋ก์๋ฅผ ํตํด์ ๋์ ๊ฐ์ฒด์ ์ ๊ทผํ๋ ๋ฐฉ์์ ๋๋ค.
- ๋์ ๊ฐ์ฒด๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์กด์ฌํ์ง ์๋๋ผ๋ ๊ธฐ๋ณธ ์ ๋ณด๋ฅผ ์ฐธ์กฐํ๊ฑฐ๋ ์ค์ ํ ์ ์์ผ๋ฉฐ, ํ์ํ ์์ ์๋ง ๊ฐ์ฒด๋ฅผ ์์ฑํฉ๋๋ค.
Proxy ํจํด ์ฌ์ฉ ์ด์
- ํ๋ก์ ๊ฐ์ฒด๋ฅผ ํตํด ํด๋ผ์ด์ธํธ์ ๋ชจ๋ ์์ฒญ์ ์กฐ์ ํ๋ฉด ์๋น์ค๋ฅผ ์ ์ฐํ๊ฒ ์ ๊ณตํ ์ ์์ต๋๋ค.
์ฅ์
- ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ํฐ ๊ฐ์ฒด๋ฅผ ๋ก๋ฉํ๊ธฐ ์ ์ ํ๋ก์๋ฅผ ํตํด ์ฐธ์กฐํ ์ ์์ต๋๋ค.
- ์๊ฒฉ ๊ฐ์ฒด๋ฅผ ๋ก์ปฌ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์๋ณธ ๊ฐ์ฒด์ ์ ๊ทผํ๊ธฐ ์ ์ ์ฌ์ ์ฒ๋ฆฌ ์์ ์ ์ํํ ์ ์์ต๋๋ค.
๋จ์
- ๊ฐ์ฒด ์์ฑ์ ์ถ๊ฐ ๋จ๊ณ๊ฐ ํ์ํ๋ฏ๋ก ๋น๋ฒํ ๊ฐ์ฒด ์์ฑ์ด ์ฑ๋ฅ์ ์ํฅ์ ์ค ์ ์์ต๋๋ค.
- ์ฝ๋ ๊ฐ๋ ์ฑ์ด ์ ํ๋ ์ ์์ต๋๋ค.
์คํ ๋ฆฌ : ์ฃผ์ ๊ฐ๊ฒฉ ๋ฐ์ดํฐ ์ฒ๋ฆฌ
์ด ์์ ๋ ์ฃผ์ ๊ฐ๊ฒฉ์ ๊ฐ์ ธ์ค๋ ์ฆ๊ถ์ฌ์ ํ๋ก์ ํจํด์ ๊ตฌํํ ๊ฒ์ ๋๋ค.
- ์ฃผ์ ๊ฐ๊ฒฉ ๋ฐ์ดํฐ๋ ์ธ๋ถ ๊ณต๊ธ์๋ก๋ถํฐ ๊ฐ์ ธ์ค๋ฉฐ, ์ด ์์ ์ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆด ์ ์์ต๋๋ค.
- ๋น ๋ฅธ ์๋ต์ด ํ์ํ ๊ณ ๊ฐ์ ์ํด Proxy ํจํด์ ์ฌ์ฉํ์ฌ ์ฃผ์ ๊ฐ๊ฒฉ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค.
Proxy ํจํด UML
- StockService ์ธํฐํ์ด์ค
- ์ฃผ์ ๊ฐ๊ฒฉ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ์ธํฐํ์ด์ค์ ๋๋ค.
- getStockPrice(): ์ฃผ์ ๊ฐ๊ฒฉ์ ์ป๋ ๋ฉ์๋.
- setStockPrice(): ์ฃผ์ ๊ฐ๊ฒฉ์ ์ค์ ํ๋ ๋ฉ์๋.
- print(): ์ฃผ์ด์ง ๋ฌธ์์ด์ ์ถ๋ ฅํ๋ ๋ฉ์๋.
- StockServiceProxy ํด๋์ค
- ๋๋ฆฌ์ ์ญํ ์ ํ๋ ํ๋ก์ ํด๋์ค๋ก StockService ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํฉ๋๋ค.
- ์ฃผ์ ๊ฐ๊ฒฉ์ ์ค์ ํ๊ณ ์ป๋ ์์ ์ ํ๋ก์๊ฐ ๋์ ์ํํฉ๋๋ค.
- print() ๋ฉ์๋๋ ํ๋ก์์ ๊ถํ์ ๋์ด์๋ฏ๋ก realService() ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ๋ณธ๋ ๊ฐ์ฒด๋ฅผ ์์ฑํฉ๋๋ค.
- setStockPrice(), getStockPrice()๋ฅผ ์ฌ๋ฌ ๋ฒ ํธ์ถํด๋ Printer ์ธ์คํด์ค๋ ์์ฑ๋์ง ์์ต๋๋ค.
- RealStockService ํด๋์ค
- ์ค์ ์ฃผ์ ๊ฐ๊ฒฉ ๋ฐ์ดํฐ๋ฅผ ์ธ๋ถ ๊ณต๊ธ์์์ ๊ฐ์ ธ์ค๋ ํด๋์ค์ ๋๋ค.
- ์ฃผ์ ๋ฐ์ดํฐ๋ฅผ ์ธ๋ถ ๊ณต๊ธ์๋ก๋ถํฐ ๊ฐ์ ธ์ค๋ ์์ ์ด ์ค๋ ๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ์ ํ๋ก์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
Proxy ํจํด Sequence Diagram
- Main์์ StockServiceProxy ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ์์ฑํฉ๋๋ค.
- ์ฃผ์ ๊ฐ๊ฒฉ์ ์ป๋ ๊ณผ์ ์์ ์ธ์คํด์ค์ $130 ์ฃผ์ ๊ฐ๊ฒฉ์ ์ค์ ํฉ๋๋ค.
- ์ฃผ์ ๊ฐ๊ฒฉ์ ๋ฐํํฉ๋๋ค.
- ์ฃผ์ ๊ฐ๊ฒฉ์ $160์ผ๋ก ์ค์ ํ๋ ์์
์
๋๋ค.
- ์ด๋ ์ค์ RealStockService๋ ์์ฑ๋์ง ์์ต๋๋ค.
- print()๋ฅผ ํธ์ถํฉ๋๋ค
- ์ค์ ์ถ๋ ฅํ ๋๋ง StockServiceProxy ํด๋์ค๊ฐ RealStockService ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ์์ฑํฉ๋๋ค.
- ์ค์ RealStockService์์ ๋ณ๊ฒฝ๋ ์ฃผ์ ๊ฐ๊ฒฉ์ ๋ฐ์์ ์ถ๋ ฅํ๊ณ , ๋ค์ ์กฐํ ๋ ๋ณ๊ฒฝ๋ ๊ฐ๊ฒฉ์ ์ ๊ณตํฉ๋๋ค.
- ๊ฒฐ๊ณผ๊ฐ์ ๋ฐํํฉ๋๋ค.
๊ฒฐ๊ณผ
- ์ฃผ์ ๊ฐ๊ฒฉ์ ์ค์ ํ๊ณ ๋ณ๊ฒฝํ๋ ์์ ์ ํ๋ก์๊ฐ ํฉ๋๋ค.
- ์ค์ ์ฃผ์ ์๋น์ค๋ ์ถ๋ ฅํ ๋ ์์ฑ๋์ด ํจ์จ์ ์ผ๋ก ์ฃผ์ ๊ฐ๊ฒฉ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
'Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JAVA] ๋์์ธ ํจํด - Visitor ํจํด (0) | 2024.01.18 |
---|---|
[JAVA] ๋์์ธํจํด - State ํจํด (0) | 2024.01.18 |