객체지향 프로그래밍의 특성과 장점을 최대한으로 끌어올리기 위한 설계 방법.
(유연성, 재사용성, 유지보수성)
📄 SRP (Single Responsibility Principle)
- 단일 책임 원칙
- 하나의 객체가 여러개의 책임을 갖고 있지 않도록, 책임별로 분리한다.
(1클래스 = 1책임)
- 한 책임의 변경에 의해 다른 책임과 관련된 코드에 영향을 미치지 않도록 한다.
📄 OCP (Open-Closed Principle)
- 개방 폐쇄 원칙
- 확장에는 열려있어야 하고, 변경에는 닫혀 있어야 한다.
- 기존 코드를 변경하지 않아도 기능을 새롭게 만들거나 변경할 수 있도록 한다.
📄 LSP (Liskov Substitution Principle)
- 리스코프 치환법칙
- 부모 클래스와 자식 클래스 사이 행위는 일관성 있어야한다.
(Is-a 관계)
- 상위 타입 객체를 하위 타입 객체로 치환해도 정상적으로 동작해야 한다.
📄 ISP (Interface Segregation Principle)
- 인터페이스 분리 원칙
- 자신이 사용하지 않는 메소드에 의존 관계를 맺지 않도록 설계해야한다.
- 하나의 통합적인 인터페이스보다는 차라리 여러 개의 세부적인 인터페이스가 낫다.
📄 DIP (Dependency Inversion Principle)
- 의존관계 역전 원리
- 고수준 모듈은 저수준 모듈의 구현에 의존해서는 안 된다.
- 의존관계를 맺을 때는 잘 변하지 않는 상위 모듈에 의존해야한다.
(인터페이스, 추상클래스 등)
자료출처