이 저장소는 SOLID 원칙에 대해 쉽게 알아볼 수 있게 나쁜/좋은 코드로 분리하여 작성하였습니다.
각 원칙에 example의 bad/good에 코드를 작성하였으며, ❌,✅ 등과 같은 첨부된 주석과 같이 해석하여 쉽게 알아볼 수 있게 만들었습니다.
- DIP - 의존관계 역전 원칙
- ISP - 인터페이스 분리 원칙
- LSP - 리코스프 치환 원칙
- OCP - 개방 폐쇄 원칙
- SRP - 단일 책임 원칙
SOLID는 객체 지향 프로그래밍에서의 기본 원칙을 5가지로 나눈 것이며 로버트 C.마틴이 설계했습니다.
시간이 지나도 유지 보수와 확장이 쉬운 시스템을 만들기 위한 법칙입니다.
- Single responsibility principle(단일 책임 원칙)
- 한 클래스는 하나의 책임만 가져야 한다.
- Open/closed principle (개방-폐쇄 원칙)
- 확장에는 열려있으나 변경에는 닫혀있어야 한다.
- Liskov substitution principle (리코스프 치환 원칙)
- 하위 클래스는 상위 클래스의 기능을 대체할 수 있어야 하며, 상위 클래스의 객체를 사용하는 프로그램은 하위 클래스의 객체로 변경해도 정상적으로 작동해야 한다
- Interface segregation principle (인터페이스 분리 원칙)
- 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.
- Dependency inversion principle (의존관계 역전 원칙)
- 추상화에 의존해야 하며, 구체화에 의존하면 안된다
약자 | SOLID 원칙 | 핵심 개념 |
---|---|---|
S | Single Responsibility Principle (단일 책임 원칙) | 한 클래스는 하나의 책임만 가져야 한다. |
O | Open/closed principle (개방-폐쇄 원칙) | 확장에는 열려있으나 변경에는 닫혀있어야 한다. |
L | Liskov substitution principle (리코스프 치환 원칙) | 하위 클래스는 상위 클래스의 기능을 대체할 수 있어야 하며, 상위 클래스의 객체를 사용하는 프로그램은 하위 클래스의 객체로 변경해도 정상적으로 작동해야 한다 |
I | Interface segregation principle (인터페이스 분리 원칙) | 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다. |
D | Dependency inversion principle (의존관계 역전 원칙) | 추상화에 의존해야 하며, 구체화에 의존하면 안된다 |