- SRP(단일 책임 원칙)
- OCP(개방-폐쇄 원칙)
- LSP(리스코프 치환 원칙)
- ISP(인터페이스 분리 원칙)
- DIP(의존 역전 원칙)
- 객체지향을 설계할때 지키면 좋은 원칙
- 객체는 확장에 대해서는 개방적이고 수정에 대해서는 폐쇄적이어야 한다는 원칙이다.
- 기존의 코드를 변경하지 않고 기능을 수정하거나 추가할 수 있도록 설계해야 한다.
- 대표적인 문법이 인터페이스(Interface)이다.
- 자식 클래스는 언제나 자신의 부모 클래스를 대체할 수 있다는 원칙이다.
- 자식 클래스는 부모 클래스의 기능을 수행할 수 있어야 한다.
- 한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다.
- 하나의 일반적인 인터페이스보다는, 여러 개의 구체적인 인터페이스가 낫다.
- 상성이 높고 안정적인 고수준의 클래스는 구체적이고 불안정한 저수준의 클래스에 의존해서는 안된다는 원칙이다
- 추상화 된 것은 구체적인 것에 의존하면 안 된다. 구체적인 것이 추상화된 것에 의존해야 한다.
- 의존관계를 맺을 때, 구체적인 클래스보다 인터페이스나 추상 클래스와 관계를 맺는다는 것을 의미한다.
- DIP를 만족하면 '의존성 주입(DI)' 기술로 변화에 유연한 설계를 할 수 있다.
- 1)응집도 : 하나의 기능을 제공하기 위해 집중하는 정도
- 2)결합도 : 두 모듈 사이의 연관 관계