BE/Spring

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

Taylor Kang 2021. 5. 20. 18:42

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

  • Single Responsibility Principle
  • Open CLosed Principle
  • Liskov Substitution Principle
  • Interface Segregation Principle
  • Dependency Inversion Principle

 

SRP

  • Single Responsibility Principle
  • ๋‹จ์ผ ์ฑ…์ž„ ์›์น™
  • ์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„ ๋ถ€ํ’ˆ(ํด๋ž˜์Šค,ํ•จ์ˆ˜ ๋“ฑ)์€ ๋‹จ ํ•˜๋‚˜์˜ ์ฑ…์ž„(๊ธฐ๋Šฅ)๋งŒ์„ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค
  • → ์‘์ง‘๋„๋Š” ๋†’๊ณ , ๊ฒฐํ•ฉ๋„๋Š” ๋‚ฎ๊ฒŒ

OCP

  • Open CLosed Principle
  • ๊ฐœ๋ฐฉ ํ์‡„ ์›์น™
  • ๊ธฐ์กด ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€/์ˆ˜์ • ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„ํ•ด์•ผ ํ•œ๋‹ค.
  • ex. ์ธํ„ฐํŽ˜์ด์Šค

LSP

  • Liskov Substitution Principle
  • ๋ฆฌ์Šค์ฝ”ํ”„ ์น˜ํ™˜ ์›์น™
  • ๋ถ€๋ชจ ํด๋ž˜์Šค์™€ ์ž์‹ ํด๋ž˜์Šค ์‚ฌ์ด ํ–‰์œ„์—๋Š” ์ผ๊ด€์„ฑ์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค. (== ๋ถ€๋ชจ ํด๋ž˜์Šค ์ธ์Šคํ„ด์Šค ๋Œ€์‹  ์ž์‹ ํด๋ž˜์Šค ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๋ฌธ์ œ๊ฐ€ ์—†๋„๋ก ์„ค๊ณ„)

DIP

  • Dependency Inversion Principle
  • ์˜์กด ์—ญ์ „ ์›์น™
  • ์˜์กด ๊ด€๊ณ„๋ฅผ ๋งบ์„ ๋•Œ, ๋ณ€ํ™”ํ•˜๊ธฐ ์‰ฌ์šด ๊ฒƒ(๊ตฌ์ฒดํ™” ๋œ ํด๋ž˜์Šค) ๋ณด๋‹ค ๋ณ€ํ™”ํ•˜๊ธฐ ์–ด๋ ค์šด ๊ฒƒ(์ถ”์ƒํด๋ž˜์Šค/์ธํ„ฐํŽ˜์ด์Šค)์— ์˜์กดํ•ด์•ผ ํ•œ๋‹ค.
  • ex. ์˜์กด์„ฑ ์ฃผ์ž…

ISP

  • Interface Segregation Principle
  • ์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ ์›์น™
  • ํ•œ ํด๋ž˜์Šค๋Š” ์ž์‹ ์ด ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ตฌํ˜„ํ•˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค. → ํ•˜๋‚˜์˜ ์ผ๋ฐ˜์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค๋ณด๋‹ค ์—ฌ๋Ÿฌ๊ฐœ์˜ ๊ตฌ์ฒด์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๋‚ซ๋‹ค.
  • → ์ž์‹ ์ด ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ธฐ๋Šฅ์—๋Š” ์˜ํ–ฅ์„ ์•ˆ๋ฐ›์•„์•ผ ํ•จ
  • ๋‚ด๋ถ€ ์˜์กด์„ฑ์„ ์•ฝํ™”์‹œ์ผœ ๋ฆฌํŒฉํ† ๋ง, ์ˆ˜์ •, ์žฌ๋ฐฐํฌ๋ฅผ ์‰ฝ๊ฒŒ ์„ค๊ณ„

'BE > Spring' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Use gradlew, not gradle !  (0) 2022.01.20
MapStruct with Kotlin  (0) 2021.06.09