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

๐Ÿ”ญComputer Science๐Ÿ”ญ

[๊ฐ์ฒด์ง€ํ–ฅ] ๊ฐ์ฒด์ง€ํ–ฅ์˜ ํŠน์ง•๊ณผ ์„ค๊ณ„ ์›์น™

๊ฐ์ฒด์ง€ํ–ฅ ํŠน์ง•

  • ์ถ”์ƒํ™”
    • ์–ด๋–ค ์˜์—ญ์—์„œ ํ•„์š”๋กœ ํ•˜๋Š” ์†์„ฑ์ด๋‚˜ ํ–‰๋™์„ ์ถ”์ถœํ•˜๋Š” ์ž‘์—… (๊ณตํ†ต์ , ๋Œ€ํ‘œ์  ํŠน์ง•)
  • ์บก์Šํ™”
    • ์บก์Šํ™”๋ฅผ ํ†ตํ•ด ๊ฐ์ฒด ๊ฐ„ ๋‚ฎ์€ ๊ฒฐํ•ฉ๋„๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์ •๋ณด์€๋‹‰
  • ์ผ๋ฐ˜ํ™” ๊ด€๊ณ„ (์ƒ์† ๊ด€๊ณ„)
    • ์—ฌ๋Ÿฌ ๊ฐ์ฒด๋“ค์ด ๊ฐ€์ง„ ๊ณตํ†ต๋œ ํŠน์„ฑ์„ ํ•˜๋‚˜์˜ ๊ฐœ๋…์œผ๋กœ ์„ฑ๋ฆฝ์‹œํ‚ค๋Š” ๊ณผ์ •
  • ๋‹คํ˜•์„ฑ
    • ์„œ๋กœ ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๊ฐ€ ๊ฐ™์€ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์•˜์„ ๋•Œ ๊ฐ์ž ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ๋Šฅ๋ ฅ

๊ฐ์ฒด์ง€ํ–ฅ์˜ ์„ค๊ณ„ ์›์น™

๊ฐ์ฒด์ง€ํ–ฅ์˜ ์›๋ฆฌ๋ฅผ ์ด์šฉํ•˜๋ฉด ์ข€ ๋” ์œ ์ง€๋ณด์ˆ˜์™€ ํ™•์žฅ์ด ์‰ฌ์šด ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

๊ฐ์ฒด์ง€ํ–ฅ์˜ 5๋Œ€ ์„ค๊ณ„ ์œˆ์น™ : SOLID

  • ๋‹จ์ผ ์ฑ…์ž„ ์›์น™ SRP (Single Responsibility Principle)
    • ๋ชจ๋“  ํด๋ž˜์Šค๋Š” ํ•˜๋‚˜์˜ ์ฑ…์ž„๋งŒ์„ ๊ฐ€์ง„๋‹ค.
    • ๊ฐ ํด๋ž˜์Šค๋Š” ์ฑ…์ž„์„ ์™„์ „ํžˆ ์บก์Šํ™” ํ•ด์•ผ ํ•œ๋‹ค.
  • ๊ฐœ๋ฐฉ-ํ์‡„ ์›์น™ OCP (Open Closed Principle)
    • ํ™•์žฅ์—๋Š” ์—ด๋ ค์žˆ๊ณ  ์ˆ˜์ •์—๋Š” ๋‹ซํ˜€์žˆ๋‹ค.
      • ์š”๊ตฌ์‚ฌํ•ญ ๋ณ€๊ฒฝ์ด๋‚˜ ์ถ”๊ฐ€์—๋„ ๊ธฐ์กด์˜ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์œผ๋ฉด์„œ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์–ด์•ผ๋งŒ ํ•œ๋‹ค.
  • ๋ฆฌ์Šค์ฝ”ํ”„ ์น˜ํ™˜ ์›์น™ LSP (Liskov Substitution Principle)
    • ์ž์‹ ํด๋ž˜์Šค๋Š” ์–ธ์ œ๋‚˜ ๋ถ€๋ชจ ํด๋ž˜์Šค๋ฅผ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋‹ค.
      • But, ์ž์‹ ํด๋ž˜์Šค๋Š” ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ์ฑ…์ž„์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ํ™•์žฅ๋งŒ์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•œ๋‹ค.
  • ์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ์›์น™ ISP (Interface Segregation Principle)
    • ํ•œ ํด๋ž˜์Šค๋Š” ์ž์‹ ์ด ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ตฌํ˜„ํ•˜์ง€ ๋ง์•„์•ผ ํ•œ๋‹ค.
    • ์ž์‹ ์ด ์ด์šฉํ•˜์ง€ ์•Š๋Š” ๊ธฐ๋Šฅ ๋ณ€ํ™”์— ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๋„๋ก ์„ค๊ณ„ํ•ด์•ผ ํ•œ๋‹ค.
    • ์ฆ‰, ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ฐ ํด๋ผ์ด์–ธํŠธ์— ํŠนํ™”๋˜๋„๋ก ๋ถ„๋ฆฌ์‹œ์ผœ์•ผ๋งŒ ํ•œ๋‹ค.
  • ์˜์กด ์—ญ์ „ ์›์น™ DIP (Dependency Inversion Principle)
    • ์˜์กด ๊ด€๊ณ„๋ฅผ ๋งบ์„ ๋•Œ๋Š” ๋ณ€ํ™”๊ฐ€ ๋งŽ์€ ๊ฒƒ๋ณด๋‹จ ์ ์€ ๊ฒƒ ๋˜๋Š” ์—†๋Š” ๊ฒƒ์— ์˜์กดํ•ด์•ผ ํ•œ๋‹ค.
      • ๊ตฌ์ฒด์ ์ธ ํด๋ž˜์Šค๋ณด๋‹จ ์ธํ„ฐํŽ˜์ด์Šค๋‚˜ ์ถ”์ƒ ํด๋ž˜์Šค์™€ ๊ด€๊ณ„๋ฅผ ๋งบ์ž.
    • ํด๋ž˜์Šค ๊ฐ„ ์˜์กด ๊ด€๊ณ„?
      • ํ•œ ํด๋ž˜์Šค๊ฐ€ ์–ด๋–ค ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ ์„œ๋น„์Šค๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ (์˜์กด ๊ด€๊ณ„)

'๐Ÿ”ญComputer Science๐Ÿ”ญ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Spring - Spring MVC - SpringBoot์˜ ์ฐจ์ด  (0) 2021.04.01