본문 바로가기

항해99

항해 99 - 2023.01.26 TIL

오늘은 객체지향의 5원칙인 SOLID에 대해서 학습을 진행했다.

 

객체지향 파트를 나름 열심히 공부한 것 같은데, SOLID가 어렵게만 느껴졌다.

하나 하나씩 천천히 학습을 진행했고, 나름대로 각 원칙에 대해서 정리를 해보았다.

 

 

단일 책임 원칙 (Single Responsibility Principle, SRP)

단일 클래스에 여러가지 기능을 부여하지 않고, 여러 클래스로 기능을 분산하여 객체별로 책임을 나누는 것을 말한다.

 

개방 - 폐쇄 원칙(Open-Closed Principle, OCP)

확장에는 편리하되, 변경되지 않아야한다.

기능 추가 요청 시에 클래스 확장을 통해 손쉽게 구현할 수 있지만, 확장에 따른 클래스 수정은 최소화하도록 프로그램을 설계하는 것을 말한다.

 

리스코프 치환 원칙(Liskov Substitution Principle, LSP)

하위 클래스의 인스턴스가 상위형 객체 참조변수에 대입해 사용할 경우, 상위형 객체의 역할을 하는데 문제가 없어야한다.. 인데 아직은 개념을 정확히 이해하지 못한 것 같다. 

 

인터페이스 분리 원칙(Interface Segregation Principle, ISP)

인터페이스가 많은 기능을 가지고 있으면, 구현 시에 필요하지 않은 기능들까지도 구현해야만 한다.

필요한 기능만 떼어서 구현할 수 있도록 인터페이스를 작은 단위로 쪼개어 선언해두는 것을 말한다.

 

의존성 역전 원칙 (Dependency Inversion Principle, DIP)

저수준 모듈에 변경이 발생하여도, 고수준 모듈에서 변화가 없어야하는 것을 말한다.

 

고수준 모듈 - 어떤 의미있는 기능을 제공하는 모듈
저수준 모듈 - 고수준 모듈의 기능을 구현하기위해 필요한 하위 기능의 구현

 

 

공통된 기능을 추상화 클래스나 인터페이스를 통하여 기능을 구현하고, 각 기능을 클래스 단위로 쪼개어 둔 후에 , 기능을 수행할 때 부모 클래스로 인스턴스를 받아와 사용하였다.

이렇게 하니, 단일 책임 원칙, 의존성 역전 원칙, 개방 - 폐쇄 원칙을 어느정도 만족할 수 있었다.

 

 

 

느낀 점

SOLID가 중요한 개념인 것 같아서 블로그에 정리 중에 있다.

리스코프 치환 원칙은 개념이 잘 이해가 되지 않은 상태인지라, 추가로 공부해보면서 글을 완성해보려 한다.

 

아직 Spring을 경험해본 적이 없는데, 실제로 이러한 SOLID를 모두 지켜가면서 코드를 구현할 수 있는지가 의문이 들었다. 현업 개발자들에게 어느 원칙을 가장 중요시 하는지 질문드려보고 싶었는데 기술매니저님이 오늘은 방문하시지 않아 아쉬움이 들었다.

'항해99' 카테고리의 다른 글

항해 99 - 2023.01.28 TIL  (0) 2023.01.28
항해 99 - 2023.01.27 TIL  (0) 2023.01.27
항해 99 - 2023.01.25 TIL  (0) 2023.01.25
항해99 - 2주차 WIL  (0) 2023.01.22
항해 99 - 2023.01.20 TIL  (0) 2023.01.20