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

03/11(์›”) ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„ Java 53์ผ์ฐจ TIL - SOLID

by ๊ฐ์ž๊ฐœ๋ฐœ๊พผ 2024. 3. 12.

 

๐Ÿ“–  ์˜ค๋Š˜์˜ ํ•™์Šต ํ‚ค์›Œ๋“œ

  • SOLID

 

๐Ÿฅ”  SOLID(๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„์›์น™)

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

 

 

๐Ÿฅ”  ๋‹จ์ผ ์ฑ…์ž„ ์›์น™ (SRP)

: ์ด ์›์น™์€ ํด๋ž˜์Šค๋‚˜ ๋ชจ๋“ˆ์€ ํ•˜๋‚˜์˜ ์ฑ…์ž„๋งŒ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๊ฐ•์กฐํ•ฉ๋‹ˆ๋‹ค.

: ์ฆ‰, ํด๋ž˜์Šค๊ฐ€ ๋ณ€๊ฒฝ๋˜์–ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ํ•ด๋‹น ํด๋ž˜์Šค๊ฐ€ ๋‹ด๋‹นํ•˜๋Š” ์ฑ…์ž„ ๋•Œ๋ฌธ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

: ์ด๋Š” ์ฝ”๋“œ์˜ ์‘์ง‘์„ฑ์„ ๋†’์ด๊ณ  ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์‰ฝ๊ฒŒ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค.

 

๐Ÿฅ”  ๊ฐœ๋ฐฉ-ํ์‡„ ์›์น™ (OCP)

: ์†Œํ”„ํŠธ์›จ์–ด ์—”ํ‹ฐํ‹ฐ๋Š” ํ™•์žฅ์— ๋Œ€ํ•ด ์—ด๋ ค ์žˆ์–ด์•ผ ํ•˜๊ณ , ๋ณ€๊ฒฝ์— ๋Œ€ํ•ด์„œ๋Š” ๋‹ซํ˜€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

: ์ด๋Š” ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜๋”๋ผ๋„ ๊ธฐ์กด์˜ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์›์น™์ž…๋‹ˆ๋‹ค.

: ์ฃผ๋กœ ์ธํ„ฐํŽ˜์ด์Šค์™€ ์ถ”์ƒํ™”๋ฅผ ํ†ตํ•ด ์ด๋ฅผ ๋‹ฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

 

๐Ÿฅ”  ๋ฆฌ์Šค์ฝ”ํ”„ ์น˜ํ™˜ ์›์น™ (LSP)

: ์ด ์›์น™์€ ์ƒ์† ๊ด€๊ณ„์—์„œ ํ•˜์œ„ ํด๋ž˜์Šค๋Š” ์ƒ์œ„ ํด๋ž˜์Šค๋ฅผ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๊ฐ•์กฐํ•ฉ๋‹ˆ๋‹ค.

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

 

๐Ÿฅ”  ์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ ์›์น™ (ISP)

: ํด๋ผ์ด์–ธํŠธ๋Š” ์ž์‹ ์ด ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฉ”์„œ๋“œ์— ์˜์กดํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

: ํฐ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์—ฌ๋Ÿฌ ํด๋ผ์ด์–ธํŠธ๋“ค์ด ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์— ์˜์กดํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ๋ณด๋‹ค,

: ์ž‘์€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋‚˜๋ˆ„์–ด ๊ฐ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ•„์š”๋กœ ํ•˜๋Š” ๋ถ€๋ถ„๋งŒ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ์ด ์›์น™์˜ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค.

 

๐Ÿฅ”  ์˜์กด ์—ญ์ „ ์›์น™ (DIP)

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

: ์ด๋Š” ์˜์กด์„ฑ ์ฃผ์ž…๊ณผ ๊ด€๋ จ์ด ์žˆ์œผ๋ฉฐ, ๊ฐ์ฒด ๊ฐ„์˜ ๊ฒฐํ•ฉ์„ ์ค„์—ฌ ์‹œ์Šคํ…œ์„ ๋” ์œ ์—ฐํ•˜๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

 

 

๐Ÿ“š  ์˜ค๋Š˜์˜ ํšŒ๊ณ 

SOLID ์›์น™ ๋ฟŒ์…”๋ฒ„๋ ค