객체 지향형 프로그래밍을 하는데 있어서 중요한 개념이다. 다양한 패턴이나 효율적인 코드 구조를 원한다면, 숙지하고 있어야 할 개념이다.
SRP(Single Responsibility Principle) 단일 책임 원칙
- 하나의 클래스가 하나의 책임을 가지게 한다.
- 하나의 책임 변경의 이유가 하나가 된다.
- 하나의 기능 수정이, 다른 기능의 수정으로 이어지지 않는다.
OCP(Open-Closed Principle) 개방-폐쇄 원칙
- 소프트웨어를 구성하는 요소들이 기존에 작성된 코드에 변경이 없도록 하고, 새로운 기능의 확장에는 자유로워야 한다.
- 관리나 재사용이 용이하도록 만든다.
LSP(Liskov Subsititution Principle) 리스코브 치환 원칙
- 상위 요소를 통해서 하위 요소가 가지게 되는 동작을 하위 요소에서 수정하지 않는다.
- 하위 요소를 상위 요소로 대체할 수 있어야 한다.
- 상위 요소를 통해서 여러가지 하위 요소로 사용함으로 다형성과 확장성을 얻는다.
ISP(Interface Segregation Principle) 인터페이스 분리 원칙
- 인터페이스를 상속 시키는데 있어서, 최소한의 필요한 인터페이스를 이용해야 한다.
- 하나의 포괄적인 인터페이스 보다, 여러 세부적인 인터페이스를 사용한다.
DIP(Dependency Inversion Principle) 의존성 역전 원칙
- 클래스를 직접 참조하지 않는 대신, 클래스가 가지는 추상 메서드나 인터페이스를 통한다.
- 의존 관계는 이전과 같으나, 의존 관계의 클래스의 변경에도 의존하는 부분에 영향이 없다.