정의
- 객체 지향 설계의 5가지 기본원칙, 소프트웨어 설계에서 유지보수성, 확장성, 유연성을 높이기 위한 규칙이다.
SOLID 원칙의 종류
단일 책임 원칙 SRP(Single Responsesility Principle)
- 하나의 클래스는 하나의 책임만 가져야한다.
- 클래스는 한가지 기능에 집중해야하며, 그 외의 기능을 담당하지 않아야 한다.
- 한 책임의 변경에서 다른 책임의 변경으로의 연쇄작용에서 자유로울 수 있어야 한다.
개방 폐쇄 원칙 OCP(Open Closed Principle)
- 소프트웨어 요소(컴포넌트, 클래스, 모듈, 함수)는 확장에는 열려 있어야 하며, 수정(변경)에는 닫혀 있어야 한다.
- 새로운 기능을 추가할때 기존 코드를 수정하지 않고, 확장할 수 있도록 설계해야한다.
- 즉, 기존 구성요소를 쉽게 호가장해서 재사용할 수 있어야 한다.
리스코브 치원의 원칙 LSP(THE Liskov Substitution Principle)
- 자식 클래스는 언제나 부모 클래스를 대체할 수 있어야 한다.
- 또는 서브 타입은 언제나 기반 타입으로 교체할 수 있어야 한다.
인터페이스 분리의 원칙 ISP(Interface Segergation Principle)
- 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.
- 한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다.
- SRP가 클래스 단일 책임을 의미한다면, ISP는 인터페이스의 단일 책임을 의미한다.
의존성 역전의 법칙 DIP(Dependency Inversion Principle)
- 구체적인 클래스에 의존하지 말고 , 인터페이스나 추상 클래스에 의존하도록 설계해야한다.
- 실제 사용 관계는 바뀌지 않으면서, 추상을 매개로 메세지를 주고 받음으로써 관계를 최대한 느슨하게 만드는 원칙이다.
- 즉, 복잡하고 지난한 컴포난트간의 커뮤니케이션 관계를 단순화 하기 위한 원칙이다.
출처
https://www.nextree.co.kr/p6960/