SOLID : 객체 지향 프로그래밍의 5대 원칙
1.
SRP (Single Responsibility Principle, 단일 책임 원칙)
•
클래스는 단 하나의 책임만 가져야 한다.
•
클래스가 변경될 때, 다른 부분에 영향을 끼치지 않도록 하여야 한다.
Example
2.
OCP (Open-Closed Principle, 개방-폐쇄 원칙)
•
소프트웨어 요소는 확장에 열려 있어야 한다.
•
클래스나 모듈은 확장에 열려있으나, 수정에는 닫혀있어야 한다.
•
기존의 코드를 변경하지 않고, 새로운 기능을 추가할 수 있도록 설계해야 한다.
Example
3.
LSP (Liskov Substitution Principle, 리스코프 치환 원칙)
•
서브 타입은 언제나 기반 타입으로 대체할 수 있어야 한다.
•
상속 관계에서 부모 클래스를 대체하는 자식 클래스가 예상대로 동작하도록 한다.
Example
4.
ISP (Interface Segregation Principle, 인터페이스 분리 원칙)
•
객체는 자신이 호출하지 않는 메소드에 의존하지 않아야 한다.
•
객체를 기준으로 인터페이스를 분리하여야 한다.
Example
5.
DIP (Dependency Inversion Principle, 의존성 역전 원칙)
•
객체는 저수준 모듈보다, 고수준 모듈에 의존해야 한다.
◦
고수준 모듈 : 인터페이스와 같은 객체의 형태나 추상적 개념
◦
저수준 모듈 : 구현된 객체
◦
객체는 객체보다 인터페이스에 의존해야 한다.
◦
→ 객체의 상속은 인터페이스를 통해 이루어져야 한다
Example