1. SRP(Single REsponsibility Principle): 단일 책임 원칙
- 하나의 클래스는 하나의 책임(기능)만 가져야 함
- 유지보수 효율을 위해
- 클래스 변경 시 파급 효과 적어야 함. (클래스 변경 이유는 단 하나)
- 결합도 낮추기
2. OCP(Open-Closed Principle): 개방-폐쇄 원칙
- 확장에는 오픈, 변경에는 클로즈
- 기존 코드 변경하지 않고 기능을 수정, 추가할 수 있도록 설계
- 유연성, 재사용성, 유지보수성
- 상속(다형성), 추상화(인터페이스) 활용(자주 변경하는 부분 추상화)
3. LSP (Liskov Substitution Principle): 리스코프 치환 원칙
- 상위 타입 객체를 하위 타입 객체로 대체하여도 정상적으로 동작
- 다형성 시 하위 클래스는 인터페이스 규약 다 지켜야 함
- 상속 관계에서는 꼭 일반화 관계 성립(IS-A)
- LSP 위반 -> OCP 위반 (상속관계 잘 정의 해야함)
4. ISP(Interface Segregation Principle): 인터페이스 분리 원칙
- 클라이언트를 기준으로 인터페이스를 세부적으로 분리
- 클라이언트가 사용하지 않는 인터페이스에 변경이 발생해도 다른 인터페이스에는 영향 받지 않도록
5. DIP(Dependency Inversion Principle): 의존 역전 원칙
- 변하기 어려운 추상적인 것에 의존해야 함. (구현 클래스에 의존 X, 인터페이스에 의존 O)
- 유연하게 구현체를 변경하기 위함
- 저수준 모듈이 변경돼도 고수준 모듈은 변경이 필요 없는 형태가 이상적
24여름방학
댓글