반응형
SOLID
객체지향 설계원칙
- SRP Single Responsibility Principle
단일 책임 원칙
- 한 클래스는 하나의 책임만 가져야 한다.
- 클래스와 메서드를 잘 분리해 한 메서드를 고치면 다른 클래스를 고칠 필요가 없어야 한다.
- 변경이 있을 때 파급 효과가 적으면 단일 책임 원칙을 잘 따른 것.
- OCP Open/Closed Priciple
개방-폐쇄 원칙
- 소프트웨어 요소는 확장에는 열려있으나 변경에는 닫혀있어야 한다.
- example) 인터페이스와 구현클래스
- 소프트웨어 요소는 확장에는 열려있으나 변경에는 닫혀있어야 한다.
- LSP Liskov Substitution Principle
리스코프 치환 원칙
- 하위 클래스는 상위클래스의 의도에 맞게 기능을 구현해야 한다.
- example) 자동차 인터페이스의 엑셀은 앞으로 가라는 기능을 구현해야 한다. 뒤로 가게 구현된다면 LSP원칙을 위반한다.
- 하위 클래스는 상위클래스의 의도에 맞게 기능을 구현해야 한다.
- ISP Interface Segregation Principle
인터페이스 분리 원칙
- 인터페이스 여러 개가 범용 인터페이스 하나 보다 낫다.
- example) 자동차 인터페이스 → 운전 인터페이스, 정비 인터페이스로 분리.
- 인터페이스 여러 개가 범용 인터페이스 하나 보다 낫다.
- DIP Denpendency Inversion Principle
의존관계 역전 원칙
- 프로그래머는 "추상화에 의존해야지, 구체화에 의존하면 안된다."
→ 쉽게 말해 구현 클래스에 의존하지 말고, 인터페이스에 의존하라는 뜻.
- 프로그래머는 "추상화에 의존해야지, 구체화에 의존하면 안된다."
🌟 정리
객체 지향의 핵심은 다형성이다.
하지만 다형성만으로는 OCP, DIP를 지킬 수 없다.
→ 설정을 스프링 컨테이너가 하게끔 분리해서 위 원칙을 지킬 수 있다.
이상적으로는 모든 설계에 인터페이스를 부여하면 좋지만, 추상화라는 비용이 발생한다(여러 구현 클래스 중 어느 것을 사용해야 할 지 모두 확인해야 한다.).
→ 실무적으로 생각해보자면... 기능을 확장할 가능성이 없다면 구체 클래스를 직접사용하고, 향후 꼭 필요할 때 리팩터링해서 인터페이스를 도입하는 것도 방법이다.
반응형
'☕ JAVA > ☕ 개념지식' 카테고리의 다른 글
[JAVA][Thread]Multi Thread (0) | 2024.12.01 |
---|---|
[JAVA]@Annotation 종류와 사용법 (2) | 2024.11.29 |
[JAVA]객체지향 4가지 원칙(특징) (0) | 2024.11.18 |
[JAVA]Object:모든 클래스의 조상 (0) | 2024.11.05 |
[JAVA]Error & Exception. 예외의 종류. (0) | 2024.11.03 |