SOLID란?
- SOLID 원칙이란 객체 지향 설계에서 지켜야 할 5개의 소프트웨어 개발 원칙이다.
- SOLID 원칙은 소프트웨어의 유지보수성, 재사용성, 확장성 등을 향상시키는 기준으로 사용되며, 객체지향 설계의 중요한 지침을 제공한다. 이러한 원칙을 따르면 가독성과 유지보수성을 향상시킬 수 있다.
단일 책임 원칙(Single Responsibility Principle, SRP)
- 객체는 단 하나의 책임만을 가져야 한다.
여기서 책임은 하나의 기능 담당이라고 보면 된다. 즉, 하나의 클래스는 하나의 기능을 담당하여 하나의 책임을 수행하는데 집중되도록 클래스를 따로따로 여러 개 설계하라는 원칙이다.
- 어떤 변화에 의해 수정되어야 하는 이유는 오직 하나뿐이어야 한다.
개방 - 폐쇄 원칙(Opened-Closed Principle, OCP)
- 소프트웨어 객체(클래스, 모듈, 함수 등)는 확장에는 열려 있어야 하고, 수정에는 닫혀 있어야 한다.
즉, 기존의 코드를 수정하지 않고도 새로운 기능을 추가할 수 있도록 설계되어야 한다.
리스코프 치환 원칙(Liskov Substitution Principle, LSP)
- 자식 클래스는 언제나 부모 클래스의 역할을 대체할 수 있어야 한다.(다형성 원리를 이용하기 위한 원칙 개념으로 보면 된다.)
즉, 부모 클래스를 사용하는 코드는 자식 클래스로 대체해도 정상적으로 동작해야 한다.
쉽게 말해, 부모 클래스에서 추상화가 제대로 이루어져야 하위 클래스가 이를 대체할 수 있다.
인터페이스 분리 원칙(Interface Segregation Principle, ISP)
- 인터페이스를 각각 사용에 맞게 끔 잘게 분리해야 한다는 설계 원칙이다.
클라이언트가 필요로 하지 않는 기능을 의존하도록 강요하지 않는 원칙이라고 볼 수 있다.
즉, 클라이언트가 필요로만 하는 기능을 인터페이스로 분리해야 한다. 그리고 그 인터페이스로 의존하는 방법으로 불필요한 재컴파일과 의존을 막을 수 있다.
쉽게 말해, 큰 인터페이스를 작은 인터페이스로 분리하는 것이 좋다는 의미이다. 만약 거대한 인터페이스를 만들어버리면 이를 상속받은 클래스는 그 중 사용하지 않는 기능도 같이 구현해야 하기 때문이다.
의존성 역전 원칙(Dependency Inversion Principle, DIP)
- 상위 수준의 모듈은 하위 수준의 모듈에 의존하면 안된다. 둘 다 모두 추상화에 의존해야 한다.
추상화는 구체적인 사항에 의존해서는 안된다. 구체적인 사항은 추상화에 의존해야 한다.
쉽게 말하면, 어떤 클래스를 참조해서 사용해야 하는 상황이 생긴다면, 그 클래스를 직접 참조하는 것이 아니라 그 대상의 상위 요소(추상 클래스 or 인터페이스)로 참조해야 한다는 원칙이다.
즉, 구현 클래스에 의존하지 말고, 인터페이스에 의존하라는 뜻이다.
'OOP(객체 지향 프로그래밍)' 카테고리의 다른 글
[OOP] 객체 지향 언어의 특징 4가지(캡슐화, 상속, 추상화, 다형성) (0) | 2024.11.11 |
---|---|
[OOP] 객체 지향 디자인 패턴 (1) | 2024.06.13 |