Rootable의 개발일기
좋은 객체 지향 설계의 5가지 원칙(SOLID) 본문
- SRP : 단일 책임 원칙(Single Responsibility Principle)
- 하나의 클래스는 하나의 책임만 가져야 한다.
- 이것은 변경이 있을 때 파급 효과를 줄이기 위함
- OCP : 개방 폐쇄 원칙(Open-Close Principle)
- 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다.
- 역할과 구현의 분리를 의미하고 다형성의 개념
- 하지만 다형성만으로는 OCP 를 지킬 수 없다.
- LSP : 리스코프 치환 원칙(Liskov Substitution Principle)
- 프로그램의 객체는 프로그램의 정확성을 깨지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.
- 이것은 객체 지향의 상속 개념
- ISP : 인터페이스 분리 원칙(Interface Segregation Principle)
- 특정 Client를 위한 Interface 여러 개가 하나의 범용 Interface보다 낫다.
- 이는 인터페이스의 역할이 명확해지고, 대체 가능성이 높아져 객체 지향 프로그래밍에 더욱 적합
- DIP : 의존 관계 역전 원칙(Dependency Inversion Principle)
- 프로그래머는 역할(추상화)에 의존해야지, 구체화에 의존하면 안된다.
- 이것이 의존성 주입(DI)의 원리
- 즉, 구현 클래스에 의존하지 말고 인터페이스(역할)에 의존하라는 의미
- 이를 통해 클래스 의존 관계를 분리하고 변경이 있어도 유연하게 변경이 가능
- 다형성만으로는 DIP 를 지킬 수 없다.
📌 다형성만으로는 OCP, DIP 원칙을 지킬 수 없다.
다형성을 활용하고 있더라도 구현 객체를 변경해야 하면 클라이언트 코드도 함께 변경해야 한다.
결국 객체를 생성하고, 그것을 필요한 곳에 주입해 주는 별도의 설정자가 필요하다. 스프링은 DI, IoC 등의 기술로 이를 지원한다.
Reference:
'Spring' 카테고리의 다른 글
Spring Bean 조회 (0) | 2023.05.04 |
---|---|
Spring Container의 생성 과정 (0) | 2023.05.04 |
Spring Boot (0) | 2023.05.01 |
스프링 데이터 접근 기술 (0) | 2023.04.28 |
스프링 빈 등록 방법 (0) | 2023.04.27 |