“유지보수성과 확장성이 높은 프로그램을 만드는 5가지 핵심 원칙”
1️⃣ SOLID란?
SOLID는 객체지향 설계(Object-Oriented Design) 의 5가지 기본 원칙의 앞글자를 딴 용어로
이 원칙들을 잘 지키면, 코드가 유연하고, 수정·확장이 쉬운 구조로 만들어집니다.
| 약자 | 원칙이름 | 영어명 |
| S | 단일 책임 원칙 | Single Responsibility Principle |
| O | 개방-폐쇄 원칙 | Open-Closed Principle |
| L | 리스코프 치환 원칙 | Liskov Substitution Principle |
| I | 인터페이스 분리 원칙 | Interface Segregation Principle |
| D | 의존성 역전 원칙 | Dependency Inversion Principle |
2️⃣ 설명과 예시
| 구분 | 원칙 | 설명 | 예시 |
| S | 단일 책임 원칙 (Single Responsibility) |
클래스는 하나의 책임만 가져야 한다. 즉, 한 클래스가 여러 가지 일을 하면 수정이 어려워진다. | ‘회원관리’와 ‘메일발송’을 한 클래스에서 같이 처리하지 말고, MemberService와 MailService로 분리 |
| O | 개방-폐쇄 원칙 (Open-Closed) |
확장에는 열려 있고, 수정에는 닫혀 있어야 한다. 기존 코드를 바꾸지 않고 기능을 추가할 수 있게 설계. | 새로운 결제수단 추가 시 Payment 클래스를 수정하지 않고 KakaoPay, CardPay를 상속해서 확장 |
| L | 리스코프 치환 원칙 (Liskov Substitution) |
자식 클래스는 부모 클래스를 대체할 수 있어야 한다. 즉, 부모의 기능을 해치지 않아야 함. | Bird → Eagle, Sparrow는 OK, 하지만 Penguin은 fly() 못하므로 별도 분리 필요 |
| I | 인터페이스 분리 원칙 (Interface Segregation) |
하나의 큰 인터페이스보다, 여러 개의 구체적인 인터페이스가 낫다. | Printer 인터페이스에 scan()까지 있으면 단순 프린터는 불필요한 기능 구현해야 함 → Printable, Scannable로 분리 |
| D | 의존성 역전 원칙 (Dependency Inversion) |
구체 클래스가 아닌 추상(인터페이스)에 의존해야 한다. | Keyboard나 Mouse를 직접 만들지 않고 InputDevice 인터페이스에 의존 |
3️⃣ 정리 요약
원칙핵심 문장키워드
| 원칙 | 핵심문장 | 키워드 |
| 단일 책임 | 클래스는 한 가지 일만 하자 | 책임 분리 |
| 개방-폐쇄 | 수정 말고 확장으로 대응 | 유연성 |
| 리스코프 치환 | 자식은 부모를 대체할 수 있어야 함 | 상속 |
| 인터페이스 분리 | 필요한 인터페이스만 구현 | 효율 |
| 의존성 역전 | 구체가 아닌 추상에 의존 | 결합도 감소 |

반응형
'Study' 카테고리의 다른 글
| 정보처리기사_네트워크 정리 한눈에 보기 (실기대비핵심요약) (0) | 2025.10.23 |
|---|---|
| 정보처리기사_네트워크보안 용어 정리 (실기대비 핵심요약) (0) | 2025.10.23 |
| 데이터베이스 정규화 (0) | 2024.10.08 |
| 병행제어 (병행제어의 문제점, 병행제어 기법) (0) | 2024.09.16 |