λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
개인 곡뢀/WEB

SOLID, 쒋은 객체 μ§€ν–₯ 섀계 5원칙

by syLim___ 2023. 3. 24.
728x90

βœ… SOLID?

 - μ†Œν”„νŠΈμ›¨μ–΄ λ””μžμΈ 및 κ°œλ°œμ—μ„œ 쒋은 객체 μ§€ν–₯ 섀계λ₯Ό μœ„ν•΄ 따라야 ν•˜λŠ” 5κ°€μ§€ 원칙이닀.

 - ν΄λ¦°μ½”λ“œλ‘œ 유λͺ…ν•œ λ‘œλ²„νŠΈ λ§ˆν‹΄μ΄ μ •λ¦¬ν•œ 원칙이닀.

 - SRP, OCP, LSP, ISP, DIP의 μ•½μžμ΄λ‹€.

 


 

βœ… SRP(Single Responsibility Principle, 단일 μ±…μž„ 원칙)

 - ν•˜λ‚˜μ˜ ν΄λž˜μŠ€λŠ” ν•˜λ‚˜μ˜ μ±…μž„λ§Œ κ°€μ Έμ•Ό ν•œλ‹€.

 - μ •ν™•νžˆ λ§ν•˜λ©΄, ν•˜λ‚˜μ˜ λͺ¨λ“ˆμ€ 였직 ν•˜λ‚˜μ˜ 앑터에 λŒ€ν•΄μ„œλ§Œ μ±…μž„μ Έμ•Ό ν•œλ‹€.

 - μ„œλ‘œ λ‹€λ₯Έ μ•‘ν„°κ°€ μ˜μ‘΄ν•˜λŠ” μ½”λ“œλŠ” λΆ„λ¦¬μ‹œμΌœμ•Ό ν•œλ‹€.

 

 - 변경이 μžˆμ„ λ•Œ νŒŒκΈ‰ νš¨κ³Όκ°€ 적으면 단일 μ±…μž„ 원칙을 잘 λ”°λ₯Έ 것이닀.

 - λ”°λΌμ„œ 단일 λͺ¨λ“ˆμ€ λ³€κ²½μ˜ μ΄μœ κ°€ 였직 ν•˜λ‚˜λΏμ΄μ–΄μ•Ό ν•œλ‹€.

 - 이것은 클래슀의 κΈ°λŠ₯을 λͺ…ν™•ν•˜κ²Œ μ •μ˜ν•˜κ³ , μˆ˜μ •, μœ μ§€λ³΄μˆ˜λ₯Ό μš©μ΄ν•˜κ²Œ λ§Œλ“ λ‹€.

 

βœ… OCP(Open / Closed Principle, 개방-폐쇄 원칙)

 - μ†Œν”„νŠΈμ›¨μ–΄ μš”μ†ŒλŠ” ν™•μž₯μ—λŠ” μ—΄λ € 있고, λ³€κ²½μ—λŠ” λ‹«ν˜€μžˆμ–΄μ•Ό ν•œλ‹€.

 - OCPλ₯Ό μ§€ν‚€λ©΄ μƒˆλ‘œμš΄ κΈ°λŠ₯을 μΆ”κ°€ν•  λ•Œ κΈ°μ‘΄ μ½”λ“œλ₯Ό μˆ˜μ •ν•˜μ§€ μ•Šλ„λ‘ ν•˜μ—¬, κΈ°μ‘΄ μ½”λ“œμ˜ μ•ˆμ •μ„±μ„ μœ μ§€ν•  수 있게 λœλ‹€.

 - μŠ€ν”„λ§μ—μ„œλŠ” μ»¨ν…Œμ΄λ„ˆκ°€ OCPλ₯Ό 지킀도둝 λ„μ™€μ£ΌλŠ” 역할을 ν•œλ‹€

 

 - OCPλ₯Ό μ§€ν‚€κΈ° μœ„ν•΄μ„œλŠ” μ‹œμŠ€ν…œμ„ μ»΄ν¬λ„ŒνŠΈ λ‹¨μœ„λ‘œ λΆ„λ¦¬ν•˜κ³ , μ €μˆ˜μ€€ μ»΄ν¬λ„ŒνŠΈμ—μ„œ λ°œμƒν•œ λ³€κ²½μœΌλ‘œλΆ€ν„° κ³ μˆ˜μ€€ μ»΄ν¬λ„ŒνŠΈλ₯Ό λ³΄ν˜Έν•  수 μžˆλŠ” ν˜•νƒœμ˜ 계측ꡬ쑰가 λ§Œλ“€μ–΄μ§€λ„λ‘ ν•΄μ•Ό ν•œλ‹€.

 

βœ… LSP(Liskov Substitution Principle, λ¦¬μŠ€μ½”ν”„ μΉ˜ν™˜ 원칙)

 - ν”„λ‘œκ·Έλž¨μ˜ κ°μ²΄λŠ” ν”„λ‘œκ·Έλž¨μ˜ 정확성을 κΉ¨λœ¨λ¦¬μ§€ μ•ŠμœΌλ©΄μ„œ ν•˜μœ„ νƒ€μž…μ˜ μΈμŠ€ν„΄μŠ€λ‘œ λ°”κΏ€ 수 μžˆμ–΄μ•Ό ν•œλ‹€. (λ‹€ν˜•μ„± μœ μ§€)

 - λ‹€ν˜•μ„±μ—μ„œ ν•˜μœ„ ν΄λž˜μŠ€λŠ” λ‹¨μˆœνžˆ μ»΄νŒŒμΌμ— μ„±κ³΅ν•˜λŠ” 것을 λ„˜μ–΄μ„œμ„œ, μΈν„°νŽ˜μ΄μŠ€ κ·œμ•½μ„ λͺ¨λ‘ μ§€μΌœμ•Ό ν•œλ‹€.

 

βœ… ISP(Interface Segregation Principle, μΈν„°νŽ˜μ΄μŠ€ 뢄리 원칙)

 - νŠΉμ • ν΄λΌμ΄μ–ΈνŠΈλ₯Ό μœ„ν•œ μΈν„°νŽ˜μ΄μŠ€ μ—¬λŸ¬ κ°œκ°€ ν•œ 개의 λ²”μš© μΈν„°νŽ˜μ΄μŠ€λ³΄λ‹€ λ‚«λ‹€.

 - μΈν„°νŽ˜μ΄μŠ€λ₯Ό λΆ„λ¦¬ν•˜λ©΄ μΈν„°νŽ˜μ΄μŠ€κ°€ λͺ…ν™•ν•΄μ§€κ³ , μ˜μ‘΄μ„±μ΄ μ΅œμ†Œν™”λ˜λ©°, λŒ€μ²΄ κ°€λŠ₯성이 λ†’μ•„μ§„λ‹€.

 

βœ… DIP(Dependency Inversion Principle, μ˜μ‘΄κ΄€κ³„μ—­μ „ 원칙)

 - ν”„λ‘œκ·Έλž˜λ¨ΈλŠ” 좔상화에 μ˜μ‘΄ν•΄μ•Όμ§€, ꡬ체화에 μ˜μ‘΄ν•˜λ©΄ μ•ˆ λœλ‹€.

 - 즉, κ΅¬ν˜„ ν΄λž˜μŠ€μ— μ˜μ‘΄ν•˜μ§€ 말고, μΈν„°νŽ˜μ΄μŠ€μ— μ˜μ‘΄ν•΄μ•Ό ν•œλ‹€.

 - κ΅¬ν˜„μ²΄μ— μ˜μ‘΄ν•˜κ²Œ 될 경우 변경이 μ•„μ£Ό μ–΄λ €μ›Œμ§„λ‹€!!

 

 

 

좜처: https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard

728x90

'개인 곡뢀 > WEB' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

@ModelAttribute  (0) 2024.03.01
[κ°•μ˜ 정리] μŠ€ν”„λ§ MVC ν™œμš©  (1) 2024.02.29
304 NOT MODIFIED  (0) 2024.02.28
[κ°•μ˜ 정리] μŠ€ν”„λ§ MVC μ„€μ •(2)  (0) 2024.02.21
HTTP ν”„λ‘œν† μ½œ  (0) 2023.08.14