반응형
SOLID 원칙이란, JAVA에서 객체 지향 프로그래밍을 위해 고안된 5가치 주요 원칙을 의미한다.
1. SRP (단일책임의 원칙)
- 정의된 클래스는 하나의 책임(기능)만 가지도록 설계되어야 한다.
- 여기서 책임이란, 클래스가 특정 메서드를 알고 있다는 것이다. 특정 메서드를 여러 클래스가 알고 있다면 SRP에 어긋난 코드라고 말할 수 있다.
- 클래스를 변경하는 이유는 단 하나여야 한다.
- SRP를 준수하기 위해서는 각 클래스가 가진 책임을 최대한 분리하여야 한다.
2. OCP (개방폐쇄의 원칙)
- 클래스나 메서드는 확장에는 열려있고 변경에는 닫혀 있어야 한다.
- 기존의 코드를 변경하지 않고도 기능을 수정하고 추가할 수 있어야 한다.
- OCP를 준수하기 위해서는 추상화와 다형성에 대해 이해하는 것이 중요하다.
3. LSP (리스코브 치환의 원칙)
- 하위 클래스는 언제나 상위 클래스와 호환될 수 있어야 한다.
- 상위 클래스를 하위 클래스로 바꿔 사용해도 정상적으로 동작해야 한다 (List와 ArrayList 처럼)
- 즉 하위 클래스는 상위 클래스가 사용하는 모든 행태를 지켜야 한다
- 상속 관계의 클래스는 모두 IS-A가 성립해야 하며, 상속관계가 아닌 클래스를 상속관계로 설정하면 이 원칙에 위배된다.
4. ISP (인터페이스 분리의 원칙)
- 하나의 클래스는 자신이 사용하는 메서드에만 의존해야 한다.
- 즉, 클래스는 자신이 사용하는 메서드만 가지고 있어야 한다는 것이다.
- https://blog.itcode.dev/posts/2021/08/16/interface-segregation-principle
5. DIP (의존성 역전의 원칙)
- 고수준 모듈은 저수준 모듈의 구현에 의존해서는 안 된다.
- 저수준 모듈: 구체적인 클래스나 객체
- 고수준 모듈: 인터페이스나 추상 클래스
- 즉 구체화된 클래스에 의존하기보다는 추상 클래스나 인터페이스에 의존해야 한다.
- 반대는 이루어질 수 없다. 그 이유는 아래에 적겠다.
- 저수준 모듈은 수시로 변경이 발생한다. 특정 클래스가 저수준 모듈을 의존할 경우 그 클래스 역시 수시로 변경되어야 한다.
- 따라서 변경이 잘 발생하지 않고, 변경되어도 하위 클래스에 영향을 미치지 않는 고수준 모듈에 의존하는 형태로 이루어져야 한다.
'간단 정리 > Java' 카테고리의 다른 글
[간단 정리] DTO란? (0) | 2024.11.10 |
---|---|
[간단 정리] Mock 객체란? (1) | 2024.11.09 |
[간단 정리] Java ArrayList vs LinkedList (1) | 2024.09.08 |