SOLID
SOLID
- 좋은 객체 지향 프로그래밍을 설계하기 위한 다섯가지 원칙
- 로버트 마틴이 2000년대 초에 정리했으며, 다음과 같음
- Single responsibility principle
- Open closed priciple
- Liskov substitution principle
- Interface segregation principle
- Dependency inversion principle
Single responsibility principle (단일 책임 원칙)
- 한 클래스는 하나의 책임을 가져야 함
- 한 클래스를 변경했을 때 다른 클래스에 영향을 최소한으로 줘야 함
- Ex) UI를 변경한 것이 기능에 영향을 줘서는 안 됨
- 소프트웨어는 확장에는 열려 있으나 변경에는 닫혀 있어야 함
- 기존 코드의 변경 없이 확장 가능해야 한다는 뜻
- 이를 위해서는 객체간의 연관관계를 맺어주는 별도의 설정이 필요
다형성
만으로는 OCP를 만족하지 않음
Liskov substitution principle (리스코프 치환 원칙)
- 프로그램의 객체는 정확성을 깨뜨리지 않으며 하위 타입의 인스턴스로 바꿀 수 있어야 함
- 하위 클래스는 인터페이스의 규약을 지켜야 한다는 뜻
- 인터페이스를 구현한 구현체를 믿고 사용하기 위해 필요한 원칙
Interface segregation principle (인터페이스 분리 원칙)
- 특정 클라이언트를 위한 여러 인터페이스를 사용하는 것이 한 개의 공용 인터페이스보다 나음
- 인터페이스들을 분리하면 서로 독립적이게 되고, 명확해짐
Dependency inversion principle (의존관계 역전 원칙)
- 프로그래머는 추상화가 아닌 구체화에 의존하면 안됨
- 클래스가 아니라 인터페이스에 의존하라는 뜻
- 구현 클래스를 유연하게 변경할 수 있게 됨
References
- 스프링 핵심 원리 기본편 - 김영한 (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)