๐Ÿ“Œ ๊ณต๋ถ€ ๊ณ„๊ธฐ

๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•œ๋‹ค๋ฉด! ์ด๋ฅผ ์ง€ํ‚ค๊ธฐ ์œ„ํ•œ 5๊ฐ€์ง€ ์›์น™์— ๋Œ€ํ•ด ์•Œ ํ•„์š”๊ฐ€ ์žˆ๊ธฐ์— ๊ณต๋ถ€! ์ผ๋‹จ์€ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ์‚ฌํ•ญ๋งŒ ๋จผ์ € ์ •๋ฆฌ!

 

๐Ÿ“SOLID๋ž€?

๊ฐ์ฒด ์ง€ํ–ฅ์˜ 5๋Œ€ ์›์น™์œผ๋กœ ๊ฐ ์›์น™์˜ ์ฒซ ๋จธ๋ฆฟ๊ธ€์ž๋ฅผ ๋”ฐ์„œ SOLID๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

S : SRP : Single Responsibility Principle : ๋‹จ์ผ ์ฑ…์ž„ ์›์น™

O : OCP : Open-Colosed Principle : ๊ฐœ๋ฐœ-ํŒจ์‡„ ์›์น™

L : LSP : Liskov Substitution Principle : ๋ฆฌ์Šค์ฝ”ํ”„ ์น˜ํ™˜ ์›์น™

I : ISP : Interface Segregation Principle : ์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ ์›์น™

D : DIP : Dependency Inversion Principle : ์˜์กด์„ฑ ์—ญ์ „ ์›์น™

 

๐Ÿ“SRP : Single Responsibility Principle : ๋‹จ์ผ ์ฑ…์ž„ ์›์น™

- ํ•œ ํด๋ž˜์Šค๋Š” ๋‹จ ํ•œ๊ฐ€์ง€์˜ ์ฑ…์ž„(๋ณ€๊ฒฝ ์ด์œ )๋ฅผ ๊ฐ€์ ธ์•ผํ•œ๋‹ค.

์—ฌ๊ธฐ์„œ ๋ณ€๊ฒฝ์„ ์œ„ํ•œ ์ด์œ  ์ฑ…์ž„์ด๋ผ ํ•˜๋ฉฐ, ๋ณ€๊ฒฝ์˜ ์ด์œ ๊ฐ€ ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์ƒ๊ฒผ๋‹ค๋ฉด ํ•œ๊ฐ€์ง€ ์ด์ƒ์˜ ์ฑ…์ž„์„ ๋งก๊ณ  ์žˆ๋Š” ๊ฒƒ์ด๋‹ค. 

- ์ด๋Š” ์‘์ง‘๋„์™€ ๊ด€๋ จ์ด ์žˆ์œผ๋ฉฐ, ์‘์ง‘๋„๋Š” ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๊ฐ€ ํ•˜๋‚˜์˜ ์ถ”์ƒ์ ์ธ ๊ฐœ๋…์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ๊ทธ ํด๋ž˜์Šค์˜ ๋ชฉ์ ๊ณผ ์˜๋ฏธ๊ฐ€ ํ•œ ์ค„๋กœ ๊ธฐ์ˆ  ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

 

๐Ÿ“OCP : Open-Colosed Principle : ๊ฐœ๋ฐœ-ํŒจ์‡„ ์›์น™

- ํ™•์žฅ์—๋Š” ์—ด๋ ค์žˆ์–ด์•ผํ•˜๊ณ  ๋ณ€๊ฒฝ(์ฝ”๋“œ ์ˆ˜์ •)์—๋Š” ๋‹ซํ˜€์žˆ์–ด์•ผ ํ•œ๋‹ค.

์ด๋Š” ์‹œ์Šคํ…œ์„ ํ™•์žฅํ•˜๊ธฐ๋Š” ์‰ฌ์›Œ์•ผ ํ•˜๋Š”๋ฐ ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•ด ์‹œ์Šคํ…œ์— ๋„ˆ๋ฌด ํฐ ์˜ํ–ฅ์„ ์ค˜์„  ์•ˆ๋œ๋‹ค๋Š” ๋ชฉํ‘œ๋ฅผ ๊ฐ€์ง€๊ณ  ์„ค๊ณ„ํ•ด์•ผํ•œ๋‹ค. 

- ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๋ ค๋ฉด ์ƒ์†ํ•ด์„œ ์ˆ˜์ •?

 

๐Ÿ“LSP : Liskov Substitution Principle : ๋ฆฌ์Šค์ฝ”ํ”„ ์น˜ํ™˜ ์›์น™

- ์ƒ์œ„ ํƒ€์ž…์˜ ๊ฐ์ฒด๋ฅผ ํ•˜์œ„ ํƒ€์ž…์˜ ๊ฐ์ฒด๋กœ ์น˜ํ™˜ํ–ˆ๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ ์ƒ์œ„ ํƒ€์ž…์œผ๋กœ ๋™์ž‘ํ•˜๋˜ ๊ธฐ์กด ํ”„๋กœ๊ทธ๋žจ์€ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•ด์•ผํ•˜๋Š” ์›์น™์ด๋‹ค.

 

๐Ÿ“ISP : Interface Segregation Principle : ์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ ์›์น™

-  ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฉ”์†Œ๋“œ์— ์˜์กดํ•˜์ง€ ์•Š์•„์•ผํ•œ๋‹ค๋Š” ์›์น™์ด๋‹ค.

 

๐Ÿ“DIP : Dependency Inversion Principle : ์˜์กด์„ฑ ์—ญ์ „ ์›์น™

- ์ƒ์œ„ ์ˆ˜์ค€์˜ ๋ชจ๋“ˆ์€ ํ•˜์œ„ ๋ชจ๋“ˆ์— ์˜์กดํ•ด์„œ๋Š” ์•ˆ๋˜๋ฉฐ, ๋‘˜ ๋ชจ๋‘ ์ถ”์ƒํ™”์— ์˜์กดํ•ด์•ผ ํ•œ๋‹ค. 

- ์ถ”์ƒํ™”๊ฐ€ ๊ตฌ์ฒด์ ์ธ ์‚ฌํ•ญ์— ์˜์กดํ•ด์„œ๋Š” ์•ˆ๋˜๋ฉฐ ๊ตฌ์ฒด์ ์ธ ์‚ฌํ•ญ์ด ์ถ”์ƒํ™”์— ์˜์กดํ•ด์•ผ ํ•œ๋‹ค. 


โž• ๊ณต๋ถ€์ž๋ฃŒ 

 

SOLID ์›์น™

๊ฐ์ฒด์ง€ํ–ฅ 5๋Œ€ ์›์น™

johngrib.github.io

 

+ Recent posts