SOLID
- SRP(Single Respinsibility principle): 단일 책임 원칙
- OCP(Open/Closed Principle): 개방-폐쇄 원칙
- LSP(Liskov Substitution Principle): 리스코프 치환 원칙
- ISP(Interface Segregation Principle): 인터페이스 분리 원칙
- DIP(Dependency Inversion Principle): 의존관계 역전 원칙
SRP
- 한 클래스는 하나의 책임만 가져야한다.
- ex) 특정 코드(UI 변경 등) 수정 시 수정/변경해야하는 코드가 적을수록 단일 책임 원칙을 잘 따른 것
OCP
- 확장에는 열려(OPEN) 있어야하고 변경에는 닫혀(CLOSED) 있어야 한다.
- ex) 인터페이스를 통해 새로운 클래스 생성하여 새로운 기능을 구현할 시 개방 폐쇄 원칙 잘 따른 것
LSP
- 프로그램의 정확성을 떨어뜨리지 않고 하위 타입의 인스턴스로 바꿀 수 있어야 한다.
- ex) 리모콘 인터페이스의 + 버튼은 무조건 올리는 기능, 내려가면 리스코프 치환 원칙을 위반한 것
ISP
- 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.
- ex) 빔프로젝트 인터페이스와 리모콘 인터페이스가 분리되어 있으면 빔프로젝트 인터페이스 자체가 변해도 리모콘 인터페이스에 영향을 주지 않기 때문에 사용자(클라이언트) 입장에서 혼동이 일어나지 않는다.
DIP
- 구현 클래스에 의존하는(바라보는) 것이 아니라 인터페이스에 의존해야한다.
- ex) 붕어빵 기계를 의존하여 변경하는 것이 편하지 붕어빵 자체를 변경하는 것은 어렵다.
정리
- 객체 지향의 핵심은 다형성이다.
- 하지만 다형성만으로는 OCP와 DIP 원칙을 모두 지킬 수 없다.
반응형
'Dev > Spring&Java' 카테고리의 다른 글
[Java] 오버로딩(Overloading)과 오버라이딩(Overriding)이란 (0) | 2023.09.17 |
---|---|
[Java] 접근 제어자(Access Modifiers) 활용해보기 (0) | 2023.09.11 |
[Java] 접근 제어자(Access Modifiers) 이해하기 (0) | 2023.09.11 |
[Java] static 이해하기 (0) | 2023.09.09 |
[Spring] 이클립스에 Spring 프로젝트 생성 (STS4 설치) (0) | 2023.09.05 |