๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

DIP2

Spring - ์ง€๊ธˆ๊นŒ์ง€์˜ ์ „์ฒด ํ๋ฆ„ ์ •๋ฆฌ ์ง€๊ธˆ๊นŒ์ง€์˜ ์ฝ”๋“œ ์ƒˆ๋กœ์šด ํ• ์ธ ์ •์ฑ… ๊ฐœ๋ฐœ ์ƒˆ๋กœ์šด ํ• ์ธ ์ •์ฑ… ์ ์šฉ๊ณผ ๋ฌธ์ œ์  (dip, ocp ์œ„๋ฐ˜) ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ (์ถ”์ƒํ™”์—๋งŒ ์˜์กด, ๊ตฌ์ฒดํ™”์—๋Š” ์˜์กด๋„ ์—†๋„๋ก) AppConfig ๋ฆฌํŒฉํ„ฐ๋ง (์ „์ฒด ์•ฑ์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๋”ฐ๋กœ appconfig๋กœ ๋นผ๋‘ ) ์ƒˆ๋กœ์šด ๊ตฌ์กฐ์™€ ํ• ์ธ ์ •์ฑ… ์ ์šฉ ์ƒˆ๋กœ์šด ํ• ์ธ ์ •์ฑ… ๊ฐœ๋ฐœ ๋‹คํ˜•์„ฑ ๋•๋ถ„์— ์ƒˆ๋กœ์šด ์ •๋ฅ  ํ• ์ธ ์ •์ฑ… ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€๋กœ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ ์ž์ฒด๋Š” ์•„๋ฌด ๋ฌธ์ œ๊ฐ€ ์—†์Œ ์ƒˆ๋กœ์šด ํ• ์ธ ์ •์ฑ… ์ ์šฉ๊ณผ ๋ฌธ์ œ์  ์ƒˆ๋กœ ๊ฐœ๋ฐœํ•œ ์ •๋ฅ  ํ• ์ธ ์ •์ฑ…์„ ์ ์šฉํ•˜๋ ค๊ณ  ํ•˜๋‹ˆ ํด๋ผ์ด์–ธํŠธ ์ฝ”๋“œ์ธ ์ฃผ๋ฌธ ์„œ๋น„์Šค ๊ตฌํ˜„์ฒด๋„ ํ•จ๊ป˜ ๋ณ€๊ฒฝํ•ด์•ผํ•จ ์ฃผ๋ฌธ ์„œ๋น„์Šค ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ธํ„ฐํŽ˜์ด์Šค์ธ DiscountPolicy ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ๊ตฌ์ฒด ํด๋ž˜์Šค์ธ FixDiscountPolicy ๋„ ํ•จ๊ป˜ ์˜์กด -> DIP ์œ„๋ฐ˜ AppConfig ๋ฆฌํŒฉํ„ฐ๋ง ๊ตฌ์„ฑ .. 2023. 7. 7.
Spring - DIP, OCP๋ฅผ ์ง€ํ‚ค๋Š” ๋„๋ฉ”์ธ ์„œ๋น„์Šค ๊ธฐ์กด ์ฝ”๋“œ๋Š” ์ด๋ ‡๊ฒŒ ์ถ”์ƒํ™”์™€ ๊ตฌํ˜„์ฒด์— ๋ชจ๋‘ ์˜์กดํ•˜๊ณ  ์žˆ์ง€๋งŒ ์ด๋ฅผ ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด์„œ ๋ถ„๋ฆฌํ•ด์ฃผ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์ฝ”๋“œ๊ฐ€ ๋˜๋ฉด์„œ MemberServiceImpl์—์„œ๋Š” MemoryMemberRepository()์ธ ๊ตฌํ˜„์ฒด์— ๋Œ€ํ•ด์„œ๋Š” ์˜์กดํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, DIP๋ฅผ ์œ„๋ฐ˜ํ•˜์ง€ ์•Š๊ฒŒ๋œ๋‹ค. ๋Œ€์‹  AppConfig์—์„œ MemberService์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ทธ์˜ ๊ตฌํ˜„์ฒด์ธ MemberServiceImpl์„ ๋ถ€๋ฅด๊ณ , ๊ตฌํ˜„์ฒด๋ฅผ ๋ถ€๋ฅผ๋•Œ ์ธ์ˆ˜๋ฅผ ํ†ตํ•ด MemoryMemberRepository๋ฅผ ์ƒ์„ฑํ•ด์„œ ๋„ฃ์–ด์ฃผ๊ฒŒ ๋œ๋‹ค. (์ƒ์„ฑ์ž ์ฃผ์ž…) ์„ค๊ณ„ ๋ณ€๊ฒฝ์œผ๋กœ MemberServiceImpl ์€ MemoryMemberRepository ๋ฅผ ์˜์กดํ•˜์ง€ ์•Š๋Š”๋‹ค! ๋‹จ์ง€ MemberRepository ์ธํ„ฐํŽ˜์ด์Šค๋งŒ ์˜์กดํ•œ๋‹ค. MemberServiceImpl ์ž…์žฅ.. 2023. 7. 7.