카테고리 없음
객체지향의 솔리드 원칙
rxo2
2025. 5. 8. 20:49
1. SRP - 단일 책임 원칙
클래스는 단 하나의 책임만 가져야 한다.
핵심 개념:
- 하나의 클래스는 하나의 변경 이유만 가져야 한다.
- 책임은 변경의 이유와 직결되며, 여러 책임이 있는 클래스는 여러 이유로 변경되어야 하므로 유지보수가 어렵다.
2. OCP - 개방-폐쇄 원칙
소프트웨어 요소는 확장에는 열려 있어야 하고, 변경에는 닫혀 있어야 한다.
핵심 개념:
- 기존 코드를 수정하지 않고도 기능을 확장할 수 있어야 한다.
- 새로운 요구사항이 생겨도 기존 코드에 영향을 주지 않도록 설계한다.
3. LSP - 리스코프 치환 원칙
자식 클래스는 언제나 부모 클래스를 대체할 수 있어야 한다.
핵심 개념:
- 상속받은 클래스는 부모 클래스의 기능을 깨뜨리지 않고 사용할 수 있어야 한다.
- “is-a 관계”를 만족해야 하며, 부모 클래스를 사용하는 코드에서 자식 클래스를 넣어도 정상 동작해야 한다.
4. ISP - 인터페이스 분리 원칙
클라이언트는 자신이 사용하지 않는 인터페이스에 의존하지 않아야 한다.
핵심 개념:
- 하나의 큰 인터페이스보다는 여러 개의 작은 인터페이스가 낫다.
- 불필요한 의존성을 줄이고, 필요한 기능만 가지도록 인터페이스를 나누자.
5. DIP - 의존 역전 원칙
고수준 모듈은 저수준 모듈에 의존해서는 안 된다. 둘 다 추상화에 의존해야 한다.
핵심 개념:
- 추상화에 의존하고, 구체적인 구현에 의존하지 않아야 한다.
- 의존성을 낮추고 결합도를 줄이며, 유연한 설계를 가능하게 한다.