Search
๐Ÿ“Š

Ch.02-2 : SOLID PATTERNS

course
last review
mastery
none
progress
not started
date
2023/09/07
4 more properties
Previous chapter

๊ฐ์ฒด์ง€ํ–ฅ

๊ฐ ๊ฐ์ฒด๋Š” ์ƒํƒœ์™€ ๋™์ž‘์„ ๊ฐ€์ง€๋ฉฐ, ์„œ๋กœ ๋ฉ”์„ธ์ง€๋ฅผ ํ†ตํ•ด ์ƒํ˜ธ์ž‘์šฉํ•œ๋‹ค.

์žฌ์‚ฌ์šฉ์„ฑ์„ ์œ„ํ•œ 4๊ฐ€์ง€

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

SOLID

SRP || Single Responsibility Principle

ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๋Š” ํ•˜๋‚˜์˜ ์ฑ…์ž„๋งŒ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.
ํด๋ž˜์Šค๊ฐ€ 2๊ฐ€์ง€ ์ด์ƒ์˜ ์ฑ…์ž„์„ ๋งก์œผ๋ฉด ์‘์ง‘๋„๊ฐ€ ๋‚ฎ์•„์ง€๊ฒŒ ๋œ๋‹ค.
โ€ข
์‘์ง‘๋„๋Š” ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๊ฐ€ ์˜จ์ „ํžˆ ์ˆœ๋„๋†’๊ฒŒ ์ฑ…์ž„์ง€๋Š”์ง€์˜ ์ •๋„
โ€ข
๊ฒฐํ•ฉ๋„๋Š” ํด๋ž˜์Šค๊ฐ„์˜ ์ƒํ˜ธ์˜์กด๋„
์‘์ง‘๋„๊ฐ€ ๋†’์„ ์ˆ˜๋ก ์ข‹์€ ์„ค๊ณ„๋‹ค.

OCP || Open-Closed Principle

ํ™•์žฅ๋˜๋Š” ๊ธฐ๋Šฅ์€ ์—ด๋ ค์žˆ์–ด์•ผ ํ•˜๊ณ , ๋ณ€๊ฒฝ๋˜๋Š” ๊ธฐ๋Šฅ์€ ๋‹ซํ˜€์žˆ์–ด์•ผ ํ•œ๋‹ค.
โ€ข
OPEN
โ—ฆ
ํด๋ž˜์Šค ์ˆ˜์ง๊ด€๊ณ„(is-a)์—์„œ๋Š” ์—ด๋ ค์žˆ์–ด์•ผ ํ•œ๋‹ค.
โ—ฆ
๊ธฐ๋ฐ˜ ํด๋ž˜์Šค์—์„œ ํŒŒ์ƒ ํด๋ž˜์Šค๋กœ์˜ ํ™•์žฅํ•˜๋Š” ๊ฒฝ์šฐ์— ํ•ด๋‹นํ•œ๋‹ค.
โ€ข
CLOSE
โ—ฆ
ํด๋ž˜์Šค ์ˆ˜ํ‰๊ด€๊ณ„(has-a)์—์„œ๋Š” ๋…๋ฆฝ์ ์ธ ๊ด€๊ฒŒ๊ฐ€ ํ˜•์„ฑ๋˜์–ด์•ผ ํ•œ๋‹ค.
โ—ฆ
์„œ๋น„์Šค ์ œ๊ณต์ž์˜ ์ˆ˜์ •์€ ์„œ๋น„์Šค ์‚ฌ์šฉ์ž์—๊ฒŒ ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค.
OCP๋ฅผ ์ ์šฉํ•จ์œผ๋กœ์จ ์œ ์ง€๋ณด์ˆ˜์— ๊ฐ•ํ•˜๊ณ  ์žฌ์‚ฌ์šฉ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.

HOW? : ์ถ”์ƒํ™” ๋„์ž…

๋ณ€ํ•˜๋Š” ๊ฒƒ๊ณผ ๋ณ€ํ•˜์ง€ ์•Š์•„์•ผ ํ•˜๋Š” ๊ฒƒ์„ ์—„๊ฒฉํ•˜๊ฒŒ ๊ตฌ๋ถ„ํ•œ๋‹ค.
1.
ํด๋ž˜์Šค ์‚ฌ์ด์— ์กด์žฌํ•˜๋Š” ๊ณตํ†ต์ ์ธ ์†์„ฑ ์ถ”์ถœ
2.
์ถ”์ถœ๋œ ์†์„ฑ์€ ํ•˜๋‚˜์˜ ์ธํ„ฐํŽ˜์ด์Šค ๋˜๋Š” ์ถ”์ƒ ํด๋ž˜์Šค๋กœ ๋””์ž์ธ
3.
๋””์ž์ธ๋œ ์ธํ„ฐํŽ˜์ด์Šค ๋˜๋Š” ์ถ”์ƒ ํด๋ž˜์Šค ์ƒ์†
์ „๋žตํŒจํ„ด์ด ํ•˜๋‚˜์˜ ์˜ˆ๊ฐ€ ๋œ๋‹ค.
์ถ”์ƒ ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค ์ค‘ ํ•˜๋‚˜๋ฅผ ์“ธ ์ˆ˜ ์žˆ๋‹ค.

LSP || Liskov Substitution Principle

์ž์‹ ํƒ€์ž…๋“ค์€ ๋ถ€๋ชจ ํƒ€์ž…์œผ๋กœ ์น˜ํ™˜๋  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
LSP๋Š” ์ถ”์ƒ์ ์ธ ํด๋ž˜์Šค๋ฅผ ํ†ตํ•ด ๊ตฌ์ฒด์ ์ด ํด๋ž˜์Šค๋ฅผ ์ œ์–ดํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ๋‹ค.
์˜์กด์ ์œผ๋กœ ๋ฉ”์†Œ๋“œ์—์„œ ์‚ฌ์šฉ๋  ๋•Œ, ๋ฉ”์†Œ๋“œ์˜ ์ธ์ž๋Š” ์ถ”์ƒ ํด๋ž˜์Šค๋‚˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ฐ›์•„์„œ ์‚ฌ์šฉํ•œ๋‹ค.
์น˜ํ™˜ํ•˜๋Š” ๋Œ€์ƒ์€ ๊ตฌ์ฒด์ ์ธ ํด๋ž˜์Šค์—์„œ ์ถ”์ƒ์ ์ธ ํด๋ž˜์Šค๋กœ ์น˜ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.
์ฆ‰, ๋‹ค์Œ๊ณ  ๊ฐ™๋‹ค.
๋ถ€๋ชจ ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•  ๋•Œ, ๋ถ€๋ชจ ํด๋ž˜์Šค๊ฐ€ ์‚ฌ์šฉ๋˜๋Š” ๊ณณ์€ ์•„๋ฌด ๋ฌธ์ œ์—†์ด ์ž์‹๋„ ์“ธ ์ˆ˜ ์ž‡์–ด์•ผ ํ•œ๋‹ค.

ISP || Interface Segregation Principle

ํŠนํ™”๋œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ํ•˜๋‚˜์˜ ๋ฒ”์šฉ ์ธํ„ฐํŽ˜์ด์Šค๋ณด๋‹ค ๋‚ซ๋‹ค.
ํŒŒ์ƒ ํด๋ž˜์Šค ์ž…์žฅ์—์„œ ์‚ฌ์šฉํ•  ๋•Œ, 100% ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋งŒ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.
SRP๋Š” ํด๋ž˜์Šค์˜ ๋‹จ์ผ์ฑ…์ž„, ISP๋Š” ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋‹จ์ผ์ฑ…์ž„์„ ๊ฐ•์กฐํ•œ๋‹ค.

DIP || Dependency Inversion Principle

์ถ”์ƒ ํด๋ž˜์Šค๋Š” ํŒŒ์ƒ ํด๋ž˜์Šค๋ฅผ ์ฐธ์กฐํ•ด์„œ๋Š” ์•ˆ๋˜๋ฉฐ, ํŒŒ์ƒ ํด๋ž˜์Šค๋‚˜ ์ถ”์ƒ ํด๋ž˜์Šค๋Š” ์˜ค์ง ์ถ”์ƒ ํด๋ž˜์Šค๋งŒ์„ ์ฐธ์กฐํ•ด์•ผํ•œ๋‹ค.

ใ…‹ใ…‹

๋‚˜์˜ค๊ฒ ์ฃ ?
Next chapter