객체지향 5대 원칙
📌 정의
SRP(Single Responsiblity Principle) 단일 책임 원칙
- 소프트웨어의 설계 부품(클래스, 함수 등)은 단 하나의 책임만을 가져야 한다.
책임은 기능으로 해석하면 된다.
OCP(Open-Closed Pinciple) 개방-폐쇄 원칙
- 기존의 코드를 변경하지 않고(Closed), 기능을 수정하거나 추가할 수 있도록(Open) 설계해야 한다.
변경되는 것이 무엇인지 초점을 맞춘다. 즉, 자주 변경되는 내용은 수정하기 쉽게 설계하고, 자주 변경되지 않는 것은 수정되는 내용에 영향을 받지 않는 것.
이를 위해 인터페이스를 자주 사용한다.
LSP(Liskov Substitution Principle) 리스코프 치환 원칙
자식클래스는 부모클래스에서 가능한 행위를 수행할 수 있어야 한다.
상속 관계에서는 일반화 관계(IS-A)가 성립해야 한다. 일반화 관계에 있다는 것은 일관성이 있다는 것이다.
DIP(Dependency Inversion Principle) 의존 역전 원칙
의존 관계를 맺을 때, 변화하기 쉬운 것보단 변화하기 어려운 것에 의존해야 한다는 원칙이다.
DIP를 만족한다는 것은 의존관계를 맺을 때, 구체적인 클래스보다 인터페이스나 추상클래스와 관계를 맺는다는 것을 의미한다.
ISP(Interface Segregation Principle) 인터페이스 분리 원칙
한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다. 하나의 일반적인 인터페이스보다는, 여러 개의 구체적인 인터페이스가 낫다.