SOLID

jmยท2023๋…„ 4์›” 11์ผ
0

Java

๋ชฉ๋ก ๋ณด๊ธฐ
2/2

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

๐Ÿ”—ย SOLID ๋ž€ ๋กœ๋ฒ„ํŠธ C.๋งˆํ‹ด์ด ์ •์˜ํ•œ ๊ฐ์ฒด์ง€ํ–ฅํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐ ์„ค๊ณ„์˜ ๋‹ค์„ฏ๊ฐ€์ง€ ๊ธฐ๋ณธ ์›์น™์ด๋‹ค.

  • SRP(Single Responsibility Principle): ๋‹จ์ผ ์ฑ…์ž„ ์›์น™
  • OCP(Open Closed Priciple): ๊ฐœ๋ฐฉ ํ์‡„ ์›์น™
  • LSP(Listov Substitution Priciple): ๋ฆฌ์Šค์ฝ”ํ”„ ์น˜ํ™˜ ์›์น™
  • ISP(Interface Segregation Principle): ์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ ์›์น™
  • DIP(Dependency Inversion Principle): ์˜์กด ์—ญ์ „ ์›์น™

1. SRP - ๋‹จ์ผ ์ฑ…์ž„ ์›์น™

์–ด๋–ค ํด๋ž˜์Šค๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ์˜ค์ง ํ•˜๋‚˜๋ฟ์ด์–ด์•ผ ํ•œ๋‹ค. - ๋กœ๋ฒ„ํŠธ C.๋งˆํ‹ด

๋ชจ๋“  ํด๋ž˜์Šค๋Š” ๊ฐ๊ฐ ํ•˜๋‚˜์˜ ์ฑ…์ž„๋งŒ์„ ๊ฐ€์ง€๋ผ๋Š” ๋œป์ด๋‹ค.
ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋Š” ์ž์‹ ์ด ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๊ณผ ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ๋งŒ ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์–ด์•ผ ํ•œ๋‹ค.

โ†’ ๋†’์€ ์‘์ง‘๋„, ๋‚ฎ์€ ๊ฒฐํ•ฉ

  • SRP ๊ฐ€ ์œ„๋ฐฐ๋˜๋Š” ๊ฒฝ์šฐ
    • ์‚ฌ๋žŒ์ด๋ผ๋Š” ํด๋ž˜์Šค์— ์ด๋ฆ„, ๋‚˜์ด , ํ‚ค, ํ˜ˆ์•กํ˜•, ๋ณ‘๋ ฅ, ๊ฐœ๋ฐœ ์–ธ์–ด, ๊ฐœ๋ฐœ ๊ฒฝ๋ ฅ์ด๋ผ๋Š” ํ•„๋“œ๊ฐ€ ์žˆ๋‹ค.

    • ๊ฐœ๋ฐœ์ŠคํŽ™ ๊ฒ€ํ†  ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„  ์‚ฌ๋žŒ์ด๋ผ๋Š” ํด๋ž˜์Šค๋ณด๋‹ค ์ง€์›์ž๋ผ๋Š” ํด๋ž˜์Šค ๋ช…์ด ๋” ์–ด์šธ๋ฆฌ๊ณ 

      ์ด์— ํ•„์š”ํ•œ ํ•„๋“œ๋Š” ๊ฐœ๋ฐœ ์–ธ์–ด, ๊ฐœ๋ฐœ ๊ฒฝ๋ ฅ์ด๋‹ค. ์ด ์™ธ ํ•„๋“œ๋Š” ํ•„์š” ์—†์Œ

    • ๋ณ‘์› ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฒฝ์šฐ ์‚ฌ๋žŒ์ด๋ผ๋Š” ํด๋ž˜์Šค ๋ช…๋ณด๋‹ค ํ™˜์ž๋ผ๋Š” ํด๋ž˜์Šค ๋ช…์ด ์–ด์šธ๋ฆผ, ์ด์— ํ•„์š”ํ•œ ํ•„๋“œ๋Š” ์ด๋ฆ„, ๋‚˜์ด, ํ‚ค, ํ˜ˆ์•กํ˜•, ๋ณ‘๋ ฅ ์ •๋„ ์ผ ๊ฒƒ์ด๋‹ค.

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



2. OCP - ๊ฐœ๋ฐฉ ํ์‡„ ์›์น™

์†Œํ”„ํŠธ์›จ์–ด ์—”ํ‹ฐํ‹ฐ(ํŒจํ‚ค์ง€, ํด๋ž˜์Šค, ๋ชจ๋“ˆ, ํ•จ์ˆ˜ ๋“ฑ)๋Š” ํ™•์žฅ์— ๋Œ€ํ•ด์„œ๋Š” ๊ฐœ๋ฐฉ๋˜์–ด์•ผ ํ•˜์ง€๋งŒ ๋ณ€๊ฒฝ์— ๋Œ€ํ•ด์„œ๋Š” ํ์‡„๋˜์–ด์•ผ ํ•œ๋‹ค. - ๋กœ๋ฒ„ํŠธ C. ๋งˆํ‹ด

์š”๊ตฌ์‚ฌํ•ญ ๋ณ€๊ฒฝ, ์ถ”๊ฐ€๊ฐ€ ์žˆ๋”๋ผ๋„ ๊ธฐ์กด์˜ ์ฝ”๋“œ๋Š” ์ˆ˜์ •์ด ์ผ์–ด๋‚˜์ง€ ๋ง์•„์•ผ ํ•˜๋ฉฐ, ๊ธฐ์กด ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ํ™•์žฅํ•ด์„œ ์žฌ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. โ†’ ์œ ์—ฐ์„ฑ, ์žฌ์‚ฌ์šฉ์„ฑ, ์œ ์ง€๋ณด์ˆ˜์„ฑ

  • OCP ์›์น™์ด ์œ„๋ฐฐ๋˜๋Š” ๊ฒฝ์šฐ

    • ์šด์ „์ž๋Š” ๋งˆํ‹ฐ์ฆˆ์™€ ์˜๋‚˜ํƒ€ ๋ผ๋Š” ๊ฐ๊ฐ์˜ ํด๋ž˜์Šค์— ์˜์กดํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋งˆํ‹ฐ์ฆˆ์™€ ์˜๋‚˜ํƒ€์˜ ๋ณ€ํ™”์— ๋”ฐ๋ผ ์˜์กด์ ์œผ๋กœ ๋ณ€ํ•˜๊ฒŒ ๋œ๋‹ค โ†’ ๋†’์€ ๊ฒฐํ•ฉ๋„
    • ์ด๋ฅผ ์œ„ํ•ด ์ƒ์œ„ ํด๋ž˜์Šค ๋˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ค‘๊ฐ„์— ๋‘์–ด ์ง์ ‘์ ์ธ ๊ฒฐํ•ฉ์„ ํ”ผํ•œ๋‹ค.
    • ์œ„์— ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ์ž๋™์ฐจ ํด๋ž˜์Šค ํ•˜์œ„์— ๋‹ค๋ฅธ ์ฐจ์ข…์„ ์ƒ์†ํ•˜์—ฌ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๊ณ  ์šด์ „์ž๋Š” ๋ณ€๊ฒฝ์— ๋Œ€ํ•ด ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๊ฒŒ ๋œ๋‹ค.


3. LSP - ๋ฆฌ์Šค์ฝ”ํ”„ ์น˜ํ™˜ ์›์น™

์„œ๋ธŒ ํƒ€์ž…์€ ์–ธ์ œ๋‚˜ ์ž์‹ ์˜ ๊ธฐ๋ฐ˜ ํƒ€์ž…์œผ๋กœ ๊ต์ฒดํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. - ๋กœ๋ฒ„ํŠธ C.๋งˆํ‹ด

ํ•˜์œ„ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋Š” ์ƒ์œ„ํ˜• ๊ฐ์ฒด ์ฐธ์กฐ ๋ณ€์ˆ˜์— ๋Œ€์ž…ํ•ด ์ƒ์œ„ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค ์—ญํ• ์„ ํ•˜๋Š”๋ฐ ๋ฌธ์ œ๊ฐ€ ์—†์–ด์•ผ ํ•œ๋‹ค. ์ƒ์†์€ ์กฐ์ง๋„, ๊ณ„์ธต๋„๊ฐ€ ์•„๋‹ˆ๋ผย ๋ถ„๋ฅ˜๋„๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค.

ํ•˜์œ„ ํด๋ž˜์Šคย is a kind ofย ์ƒ์œ„ ํด๋ž˜์Šค : ํ•˜์œ„ ๋ถ„๋ฅ˜๋Š” ์ƒ์œ„ ๋ถ„๋ฅ˜์˜ ํ•œ ์ข…๋ฅ˜์ด๋‹ค.

๊ตฌํ˜„ ํด๋ž˜์Šคย is able toย ์ธํ„ฐํŽ˜์ด์Šค : ๊ตฌํ˜„ ๋ถ„๋ฅ˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค ํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•œ๋‹ค.

โ†’ ์ƒ์† = ํ™•์žฅ
๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค ๋Œ€์‹  ์ž์‹ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๋ฌธ์ œ๊ฐ€ ์—†์–ด์•ผ ํ•œ๋‹ค.

  • LSP ์›์น™์ด ์œ„๋ฐฐ๋˜๋Š” ๊ฒฝ์šฐ
  • ๋”ธ์€ ์•„๋ฒ„์ง€ ์—ญํ• ์„ ํ•  ์ˆ˜ ์—†๋‹ค. ์•„๋“ค์€ ์•„๋ฒ„์ง€์˜ ํ•œ ์ข…๋ฅ˜๊ฐ€ ์•„๋‹ˆ๋‹ค.
  • ์ด๋Ÿฐ ๊ณ„์ธต๋„, ์กฐ์ง๋„๋Š” LSP๋ฅผ ์œ„๋ฐ˜ํ•œ๋‹ค.

  • ๊ณ ๋ž˜๋Š” ํฌ์œ ๋ฅ˜์˜ ํ•œ ์ข…๋ฅ˜
  • ์œ„์˜ ๊ทธ๋ฆผ์€ ๋™๋ฌผ์ด๋ผ ์†์„ฑ์—์„œ ๊ณ ๋ž˜, ๋ฐ•์ฅ๋กœ ํ™•์žฅํ•œ๋‹ค.

๐Ÿ’ก LSP๋Š” ์ƒ์† ๊ตฌ์กฐ๊ฐ€ ๋‹คํ˜•์„ฑ์„ ์œ„ํ•ด ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋ฉฐ OCP์˜ ๊ธฐ๋ฐ˜์ด ๋œ๋‹ค.
ํ•˜์œ„ ํด๋ž˜์Šค๊ฐ€ ์ƒ์œ„ํด๋ž˜์Šค์˜ ์—ญํ• ์„ ๋Œ€์‹ ํ•ด์ฃผ๋ฉฐ ๋…ผ๋ฆฌ์ ์œผ๋กœ ๋งž์•„์•ผ ํ•œ๋‹ค.

`์•„๋ฒ„์ง€ํด๋ž˜์Šคํƒ€์ž…ย ํ™๊ธธ๋™ = new ์•„๋“ค(); //ย LSP(๋ฆฌ์Šค์ฝ”ํ”„ ์น˜ํ™˜ ์›์น™) ์œ„๋ฐฐ *ํฌ์œ ๋ฅ˜ํด๋ž˜์Šคํƒ€์ž…*ย  ๋„์ปคย = new ๊ณ ๋ž˜(); //ย ์ž๋ฐ”๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ์ž๋™ ํƒ€์ž… ๋ณ€ํ™˜`



4. ISP - ์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ ์›์น™

ํด๋ผ์ด์–ธํŠธ๋Š” ์ž์‹ ์ด ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฉ”์†Œ๋“œ์— ์˜์กด ๊ด€๊ณ„๋ฅผ ๋งบ์œผ๋ฉด ์•ˆ ๋œ๋‹ค. - ๋กœ๋ฒ„ํŠธ C.๋งˆํ‹ด

๋‹จ์ผ ์ฑ…์ž„ ์›์น™(SRP)๋Š” ํ•˜๋‚˜์˜ ์ฑ…์ž„๋งŒ ๊ฐ–๋„๋ก ๋‹ค์ˆ˜์˜ ํด๋ž˜์Šค๋กœ ๋ถ„๋ฆฌํ•˜์˜€๋‹ค.

์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ ์›์น™์€ ๊ฐ ์—ญํ• ์— ๋งž๊ฒŒ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๋‹จ์ผ ์ฑ…์ž„ ์›์น™(SRP)๊ณผ ์ธํ„ฐํŽ˜์ด์Šค ๋ถ„ํ•  ์›์น™(ISP)์€ ๊ฐ™์€ ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋‹ค๋ฅธ ํ•ด๊ฒฐ์ฑ…์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๊ฐ€๋Šฅํ•œ ์ตœ์†Œํ•œ์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜์—ฌ ๋‹จ์ผ ์ฑ…์ž„์„ ๊ฐ•์กฐํ•œ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ISP ๋ณด๋‹ค SRP ๋ฅผ ๊ถŒ์žฅํ•œ๋‹ค.

โ†’ ๊ธฐ์กด ํด๋ผ์ด์–ธํŠธ์— ๋ณ€ํ™”๋ฅผ ์ฃผ์ง€ ์•Š์œผ๋ฉด์„œ ์ธํ„ฐํŽ˜์ด์Šค ๋งŒ์„ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค.

์˜์กด์„ฑ ์•ฝํ™”, ๋ฆฌํŒฉํ† ๋ง ๋ฐ ๊ตฌ์กฐ ๋ณ€๊ฒฝ ์šฉ์ด

  • ์ž๋™์ฐจ ์ธํ„ฐํŽ˜์ด์Šค -> ์šด์ „ ์ธํ„ฐํŽ˜์ด์Šค, ์ •๋น„ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋ถ„๋ฆฌ
  • ์‚ฌ์šฉ์ž ํด๋ผ์ด์–ธํŠธ -> ์šด์ „์ž ํด๋ผ์ด์–ธํŠธ, ์ •๋น„์‚ฌ ํด๋ผ์ด์–ธํŠธ๋กœ ๋ถ„๋ฆฌ

    ๐Ÿ’ก ๋ถ„๋ฆฌํ•˜๋ฉด ์ •๋น„ ์ธํ„ฐํŽ˜์ด์Šค ์ž์ฒด๊ฐ€ ๋ณ€ํ•ด๋„ ์šด์ „์ž ํด๋ผ์ด์–ธํŠธ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค.

๋‹จ์ผ ์ฑ…์ž„ ์›์น™(SRP)๊ณผ ์ธํ„ฐํŽ˜์ด์Šค ๋ถ„ํ•  ์›์น™(ISP)์€ ๊ฐ™์€ ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ ํ•ด๊ฒฐ์ฑ…์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.๊ฐ€๋Šฅํ•œ ์ตœ์†Œํ•œ์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜์—ฌ ๋‹จ์ผ ์ฑ…์ž„์„ ๊ฐ•์กฐํ•œ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.์ผ๋ฐ˜์ ์œผ๋กœ ISP๋ณด๋‹ค SRP ํ•  ๊ฒƒ์„ ๊ถŒ์žฅํ•˜๊ณ  ์žˆ๋‹ค.



5. DIP - ์˜์กด ๊ด€๊ณ„ ์—ญ์ „ ์›์น™

DIP๋ฅผ ๋งŒ์กฑํ•˜๋ ค๋ฉด ๊ตฌ์ฒด์ ์ธ ํด๋ž˜์Šค๋ณด๋‹ค ์ธํ„ฐํŽ˜์ด์Šค๋‚˜ ์ถ”์ƒ ํด๋ž˜์Šค์™€ ์˜์กด ๊ด€๊ณ„๋ฅผ ๋งบ๋„๋ก ์„ค๊ณ„ํ•ด์•ผ ํ•œ๋‹ค.

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

์ž์ฃผ ๋ณ€๊ฒฝ๋˜๋Š” ๊ตฌ์ฒด(Concrete) ํด๋ž˜์Šค์— ์˜์กดํ•˜์ง€ ๋งˆ๋ผ

- ๋กœ๋ฒ„ํŠธ C.๋งˆํ‹ด -

์˜์กด๊ด€๊ณ„๋ฅผ ๋งบ์„ ๋•Œ ๋ณ€ํ™”ํ•˜๊ธฐ ์‰ฌ์šด ๊ฒƒ ๋˜๋Š” ์ž์ฃผ ๋ณ€ํ™”ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋ณ€ํ™”ํ•˜๊ธฐ ์–ด๋ ค์šด ๊ฒƒ, ๊ฑฐ์˜ ๋ณ€ํ™”๊ฐ€ ์—†๋Š” ๊ฒƒ์— ์˜์กดํ•ด์•ผ ํ•œ๋‹ค.

์ฆ‰, ๊ตฌ์ฒด์ ์ธ ํด๋ž˜์Šค๋ณด๋‹ค ์ƒ์œ„ ํด๋ž˜์Šค, ์ธํ„ฐํŽ˜์ด์Šค, ์ถ”์ƒ ํด๋ž˜์Šค์™€ ๊ฐ™์ด ๋ณ€ํ•˜์ง€ ์•Š์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์€ ํด๋ž˜์Šค์™€ ๊ด€๊ณ„๋ฅผ ๋งบ์–ด์•ผ ํ•œ๋‹ค.

  • DIP ์›์น™์ด ์œ„๋ฐฐ๋˜๋Š” ๊ฒฝ์šฐ


  • ์ž๋™์ฐจ๊ฐ€ ๊ตฌ์ฒด์ ์ธ ํƒ€์ด์–ด๊ฐ€ ์•„๋‹Œ ์ถ”์ƒํ™”๋œ ํƒ€์ด์–ด ์ธํ„ฐํŽ˜์ด์Šค์—๋งŒ ์˜์กดํ•˜๊ฒŒ ํ•จ์œผ๋กœ์จ ํƒ€์ด์–ด ๋ณ€๊ฒฝ๋˜์–ด๋„ ์ž๋™์ฐจ๊ฐ€ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์Œ
  • ๋ณ€ํ•˜๊ธฐ ์‰ฌ์šด ์Šค๋…ธ์šฐํƒ€์ด์–ด์— ์˜์กดํ•˜๋˜ ๊ด€๊ณ„๋ฅผ ์ค‘๊ฐ„์— ์ถ”์ƒํ™”๋œ

ํƒ€์ด์–ด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ถ”๊ฐ€ํ•ด๋‘๊ณ  ์˜์กด ๊ด€๊ณ„๋ฅผ ์—ญ์ „ ์‹œํ‚ด

๐Ÿ’ก DIP ์›์น™์„ ๋”ฐ๋ฅด๋Š” ๋ฐฉ๋ฒ•์€ ์˜์กด์„ฑ ์ฃผ์ž…(DI: Dependency Injection)์„ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.


์ฐธ๊ณ  : [Java] ๊ฐ์ฒด ์ง€ํ–ฅ ์„ค๊ณ„๋ž€? (SOLID)

profile
ใ…Žใ…Ž

0๊ฐœ์˜ ๋Œ“๊ธ€