๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ–ฅ ์ฝ”๋“œ์Šค์ฟผ๋“œ/ํ•™์Šต์ •๋ฆฌ

๊ฐ์ฒด์ง€ํ–ฅ์˜ ์˜๋ฏธ - ๊ฐ์ฒด์ง€ํ–ฅ์˜ ์‚ฌ์‹ค๊ณผ ์˜คํ•ด ๊ฐ•์˜

by Tamii 2021. 5. 26.
๋ฐ˜์‘ํ˜•

๊ฐ์ฒด์ง€ํ–ฅ์˜ ์‚ฌ์‹ค๊ณผ ์˜คํ•ด ์ €์ž์ด์‹  ์กฐ์˜ํ˜ธ ๋‹˜์˜ ๊ธฐ์ˆ  ์„ธ์…˜์— ์ฐธ์„ํ•˜์—ฌ

๋ฐฐ์šด๊ฒƒ๋“ค์„ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.


 

๊ฐ์ฒด์ง€ํ–ฅ์„ ์–ด๋–ป๊ฒŒ ๋ฐ”๋ผ๋ด์•ผ ํ• ๊นŒ?

์‹œ์Šคํ…œ์€ ๊ฐ์ฒด๋Š” ์ฑ…์ž„์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์„ ์„ ํƒํ•˜์—ฌ ๊ฐ์ฒด์— ํ• ๋‹นํ•œ๋‹ค.

 

๋ฉ”์„ธ์ง€ : ์‹œ์Šคํ…œ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ค‘ ํ•˜๋‚˜, ๊ฐ์ฒด๊ฐ€ ์ „๋‹ฌ๋ฐ›๋Š”๋‹ค

๋ฉ”์„œ๋“œ : ์ˆ˜์‹ ๋œ ๋ฉ”์„ธ์ง€๋ฅผ ๋ฐ›์•„์„œ ๊ฐ์ฒด๊ฐ€ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•

 

๊ฐ์ฒด์ง€ํ–ฅ์„ ์งœ๊ธฐ ์œ„ํ•ด์„  ์–ด๋–ค ์‚ฌ๊ณ ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐ€์ ธ๊ฐ€์•ผ ํ• ๊นŒ?

class์˜ ์ด๋ฆ„์„ ๋จผ์ € ๊ฒฐ์ •ํ•˜๊ณ  ์žˆ๋Š”์ง€,

์ฑ…์ž„(์–ด๋–ค์ผ์„ ํ•ด์•ผํ•˜๊ณ ์žˆ๋Š”์ง€)์„ ๋จผ์ € ๊ฒฐ์ •ํ•˜๊ณ  ์žˆ๋Š”์ง€

 

์ฑ…์ž„  

* ๊ฐ์ฒด์ง€ํ–ฅ์€ runtime์— ์–ด๋–ค ์ž‘์—…์„ ์ˆ˜ํ–‰ํ• ์ง€ 

* ์ด ์ฑ…์ž„์— ๋”ฐ๋ฅธ ์ •๋ณด๋ฅผ ๋ˆ„๊ฐ€ ๊ฐ€์žฅ ๋งŽ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€์— ๋”ฐ๋ผ์„œ ๊ฒฐ์ • 

* ๋ฉ”์„œ๋“œ๋ฅผ ๋จผ์ € ๊ฒฐ์ • -> ํ•„์š”ํ•œ ์ƒํƒœ๋ฅผ ๊ฐ€์ ธ์™€์„œ ๋ฐ˜์˜ํ•˜๋„๋ก 

 

 


๐Ÿ“Œ ์ฝ”๋“œ๋ ˆ๋ฒจ์—์„œ์˜ ๊ฐ์ฒด์ง€ํ–ฅ

๊ฐ์ฒด 

ํ–‰๋™ + ์ƒํƒœ 

์ฑ…์ž„์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์•Œ๊ณ ์žˆ๋Š” ๊ฒƒ 

 

ํ–‰๋™์„ ๋จผ์ € ๊ฒฐ์ •ํ•œ ๋‹ค์Œ์— -> ์ƒํƒœ๋ฅผ ๊ฒฐ์ •ํ•จ

 

๐Ÿ˜‰ ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ , ๋ฉ”์„ธ์ง€๋ฅผ ๋จผ์ € ๋ณด์ž

์ฑ…์ž„ ๊ฒฐ์ •ํ•˜๊ธฐ : ์–ด๋–ค ๊ธฐ๋Šฅ ์•ˆ์—์„œ ๊ฐ์ฒด๊ฐ€ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ์ผ๋“ค์˜ ๋‹จ์œ„ 

n๊ฐœ์˜ ์ฑ…์ž„์ด ์–ด๋– ํ•œ ์—ฐ์œ ๋กœ ๋™์ผํ•˜๊ฒŒ ๋ณ€ํ•˜๋ฉด ๊ฐ™์€ ์ฑ…์ž„ 

 

๐Ÿ“Œ  ๊ฐ์ฒด์ง€ํ–ฅ 

๋ฉ”์„ธ์ง€ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘

๋ฉ”์„ธ์ง€๊ฐ€ ๊ฐ์ฒด๋ฅผ ์„ ํƒํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ 

 

โ– ์‘์ง‘๋„

์‘์ง‘๋„๊ฐ€ ๋†’์Œ : ๋‚ด๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€๋ฅผ ๋ฐ”๊ฟ€ ๋•Œ ๊ฐ์ฒด ์•ˆ์—์„œ๋งŒ ํŠน์ • ๋ถ€๋ถ„๋งŒ ๋ฐ”๊พผ๋‹ค

 

โ– ์˜์กด์„ฑ 

 ์žˆ๋‹ค ์—†๋‹ค์˜ ๊ฐœ๋… 

A๊ฐ€ ๋ฐ”๋€Œ๋ฉด -> B๋„ ๋ฐ”๋€๋‹ค

 

โ– ๊ฒฐํ•ฉ๋„ 

๋†’๋‹ค ๋‚ฎ๋‹ค์˜ ๊ฐœ๋… 

 

๊ฐ์ฒด๋Š” ์˜์กด์„ฑ์ด ์—†์„ ์ˆ˜ ์—†๋‹ค

์—ญํ• ์„ ๊ตฌํ˜„ํ•˜๋Š” ํ•œ๊ฐ€์ง€ ๋ฐฉ๋ฒ• : ์ธํ„ฐํŽ˜์ด์Šค

 

 


Dependency Inversion

์ค‘๊ฐ„์— ์ถ”์ƒํ™” ์ ‘์ ์„ ๋‘๊ณ  ์ „ํ†ต์ ์ธ ์˜์กด ๋ฐฉํ–ฅ์„ ๋’ค์ง‘๋Š”๊ฒƒ 

 

Inversion of Control

ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๊ธฐ๋ณธ ์›๋ฆฌ

๋‚ด๊ฐ€ ์–ด๋–ค ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค๋•Œ ์ด ์ฝ”๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ฒŒ ๋งŒ๋“ค๊ฒŒ ์ƒ์„ฑ 

- ์ „ํ†ต์ ์ธ ๋ฐฉ์‹ : ๋‚ด๊ฐ€ ์ฝ”๋“œ๋ฅผ ์ œ์–ด

- ์ œ์–ด ์—ญ์ „ : ์ƒ์œ„ ๋ถ€๋ถ„์—์„œ ์ฝ”๋“œ๋ฅผ ์ œ์–ดํ•˜๋„๋ก ์ƒ์„ฑ

 

์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋”๋ผ๋„ ๊ทธ ๊ธฐ๋Šฅ์„ '๋‚ด๊ฐ€ ์ œ์–ด'ํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ์ƒ์œ„์—์„œ ์ œ์–ด๋‹นํ•ด ๋ถˆ๋ ค์ง€๋„๋ก ๊ตฌํ˜„

 

 

 

๐Ÿ˜ฎ ๋Š๋‚€์ 

์ •๋ง ์ข‹์€ ๊ฐ•์˜์˜€๋Š”๋ฐ ๋‚ด๊ฐ€ 100% ํก์ˆ˜ํ•˜์ง€ ๋ชปํ•œ๊ฒƒ ๊ฐ™์•„์„œ ์•„์‰ฝ๋‹ค.

์ฝ”๋“œ ๊ตฌํ˜„ ๊ฒฝํ—˜์ด ๋ถ€์กฑํ•ด์„œ ๊ทธ๋Ÿฐ ๊ฒƒ ๊ฐ™์ง€๋งŒ 

์ข‹์€ ์ฝ”๋“œ๋ฅผ ์งœ๊ธฐ ์œ„ํ•œ ์ด๋ก ์ ์ธ ๋ถ€๋ถ„์— ๋Œ€ํ•œ ๊ณ ๋ฏผ๋„ ๊พธ์ค€ํžˆ ์‹ ๊ฒฝ์จ์•ผ ๊ฒ ๋‹ค.

 

 

๋Œ“๊ธ€