SOLID 원칙은 객체 지향 설계를 위한 다섯 가지 기본 원칙으로, 소프트웨어 설계의 품질을 향상시키고 유지보수를 용이하게 하며 확장성을 높이는 데 목적이 있습니다. 각 원칙은 소프트웨어 아키텍처의 결함을 줄이고, 유연성과 재사용성을 증가시키기 위해 고안되었습니다. 다음은 SOLID 원칙의 각 요소를 설명합니다:
1. Single Responsibility Principle (단일 책임 원칙)
하나의 클래스는 하나의 책임만 가져야 합니다. 즉, 클래스를 변경하는 이유는 오직 하나여야 합니다. 이 원칙을 적용하면 클래스가 변경되는 이유를 명확히 알 수 있으며, 시스템의 다른 부분에 영향을 미치지 않고 독립적으로 클래스를 개선하거나 수정할 수 있습니다.
2. Open/Closed Principle (개방-폐쇄 원칙)
소프트웨어 엔티티(클래스, 모듈, 함수 등)는 확장에는 열려 있어야 하지만, 수정에는 닫혀 있어야 합니다. 기존의 코드를 변경하지 않으면서 시스템의 기능을 확장할 수 있어야 합니다. 예를 들어, 인터페이스와 상속을 사용하여 기능을 추가할 수 있습니다.
3. Liskov Substitution Principle (리스코프 치환 원칙)
프로그램에서 부모 클래스의 인스턴스 대신 자식 클래스의 인스턴스를 사용할 수 있어야 합니다. 즉, 자식 클래스는 부모 클래스의 행위를 정확하게 모방해야 하며, 이를 통해 부모 클래스의 인스턴스 대신 자식 클래스의 인스턴스를 사용해도 시스템의 정확성이 유지되어야 합니다.
4. Interface Segregation Principle (인터페이스 분리 원칙)
클라이언트는 자신이 사용하지 않는 인터페이스에 의존하지 않아야 합니다. 큰 단일 인터페이스보다는, 구체적인 여러 인터페이스가 더 낫습니다. 이 원칙은 인터페이스를 작고 재사용 가능하며, 필요한 부분만 포함하도록 분리함으로써 클래스가 필요하지 않은 의존성을 갖지 않도록 합니다.
5. Dependency Inversion Principle (의존관계 역전 원칙)
고수준 모듈은 저수준 모듈에 의존해서는 안 되며, 둘 다 추상화에 의존해야 합니다. 추상화는 구체적인 사항에 의존해서는 안 되며, 구체적인 사항은 추상화에 의존해야 합니다. 이 원칙을 통해 모듈 간의 결합도는 낮추고 의존성은 관리가 용이하도록 조정할 수 있습니다.
'SPRING > Spring' 카테고리의 다른 글
[스프링| 스프링 핵심 원리 | 기본편 | 스프링 핵심 원리 이해1 - 예제 만들기] 도메인 개발 (0) | 2024.05.02 |
---|---|
[스프링| 스프링 핵심 원리 | 기본편 | 스프링 핵심 원리 이해1 - 예제 만들기] 프로젝트 개발 환경과 요구사항 (0) | 2024.05.02 |
[스프링| 스프링 핵심 원리 | 기본편 | 객체 지향 설계와 스프링] 다형성 (0) | 2024.05.01 |
[스프링| 스프링 핵심 원리 | 기본편 | 객체 지향 설계와 스프링] 스프링 (0) | 2024.05.01 |
[스프링| 스프링 입문 | 코드로 배우는 스프링] 스프링 데이터 JPA (0) | 2024.04.30 |