Arthur's Blog

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

OOP

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

Leeseojune53 2023. 6. 26. 00:31

๐Ÿ“Œ ์ •์˜

SRP(Single Responsiblity Principle) ๋‹จ์ผ ์ฑ…์ž„ ์›์น™

์†Œํ”„ํŠธ์›จ์–ด์˜ ์„ค๊ณ„ ๋ถ€ํ’ˆ(ํด๋ž˜์Šค, ํ•จ์ˆ˜ ๋“ฑ)์€ ๋‹จ ํ•˜๋‚˜์˜ ์ฑ…์ž„๋งŒ์„ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.

์ฑ…์ž„์€ ๊ธฐ๋Šฅ์œผ๋กœ ํ•ด์„ํ•˜๋ฉด ๋œ๋‹ค.

 

OCP(Open-Closed Pinciple) ๊ฐœ๋ฐฉ-ํ์‡„ ์›์น™

๊ธฐ์กด์˜ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ (Closed), ๊ธฐ๋Šฅ์„ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋„๋ก(Open) ์„ค๊ณ„ํ•ด์•ผ ํ•œ๋‹ค.

๋ณ€๊ฒฝ๋˜๋Š” ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€ ์ดˆ์ ์„ ๋งž์ถ˜๋‹ค. ์ฆ‰, ์ž์ฃผ ๋ณ€๊ฒฝ๋˜๋Š” ๋‚ด์šฉ์€ ์ˆ˜์ •ํ•˜๊ธฐ ์‰ฝ๊ฒŒ ์„ค๊ณ„ํ•˜๊ณ , ์ž์ฃผ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์€ ์ˆ˜์ •๋˜๋Š” ๋‚ด์šฉ์— ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๋Š” ๊ฒƒ.์ด๋ฅผ ์œ„ํ•ด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ž์ฃผ ์‚ฌ์šฉํ•œ๋‹ค.

 

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

์ž์‹ํด๋ž˜์Šค๋Š” ๋ถ€๋ชจํด๋ž˜์Šค์—์„œ ๊ฐ€๋Šฅํ•œ ํ–‰์œ„๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

์ƒ์† ๊ด€๊ณ„์—์„œ๋Š” ์ผ๋ฐ˜ํ™” ๊ด€๊ณ„(IS-A)๊ฐ€ ์„ฑ๋ฆฝํ•ด์•ผ ํ•œ๋‹ค. ์ผ๋ฐ˜ํ™” ๊ด€๊ณ„์— ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ์ผ๊ด€์„ฑ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

DIP(Dependency Inversion Principle) ์˜์กด ์—ญ์ „ ์›์น™

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

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

 

ISP(Interface Segregation Principle)

์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ ์›์น™ํ•œ ํด๋ž˜์Šค๋Š” ์ž์‹ ์ด ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ตฌํ˜„ํ•˜์ง€ ๋ง์•„์•ผ ํ•œ๋‹ค. ํ•˜๋‚˜์˜ ์ผ๋ฐ˜์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค๋ณด๋‹ค๋Š”, ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ตฌ์ฒด์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๋‚ซ๋‹ค.