SOLID 원칙
객체지향 설계원칙
hckcksrl.medium.com
개요
SOLID는 객체지향 설계 5대 원칙으로,
- SRP(단일 책임 원칙)
- OCP(개방-폐쇄 원칙)
- LSP(리스코프 치환 원칙)
- ISP(인터페이스 분리 원칙)
- DIP(의존 역전 원칙)
을 말한다.
1. SRP - 단일 책임 원칙 (Single Responsibility Principle)
모든 클래스는 각각 하나의 책임만 가져야 한다.
클래스는 그 책임을 완전히 캡슐화해야 함을 말한다.
2. OCP - 개방-폐쇄 원칙 (Open Closed Principle)
확장에는 열려있고 수정에는 닫혀있어야한다.
기존의 코드를 변경하지 않으면서(Closed), 기능을 추가할 수 있도록(Open) 설계가 되어야 한다는 원칙을 말한다.
구현에 의존하기보다 정의한 인터페이스에 의존하도록 코딩한다.
3. LSP - 리스코프 치환 원칙 (Liskov Substitution Principle)
부모 클래스가 들어갈 자리에 자식 클래스를 넣어도 계획대로 잘 작동해야 한다.
자식 클래스는 부모 클래스의 책임을 무시하거나 재정의하지 않고 확장만 수행하도록 해야 LSP를 만족한다.
4. ISP - 인터페이스 분리 원칙 (Interface Segregation Principle)
범용적인 인터페이스보다는 사용자가 실제로 사용하는 인터페이스를 만들어야 한다. (사용하지 않는 인터페이스는 구현하지 말아야 한다.)
하나의 일반적인 인터페이스보다 여러개의 구체적인 인터페이스가 낫다.
SRP가 클래스의 단일 책임을 강조한다면, ISP는 인터페이스의 단일 책임을 강조하는 것이다,
SRP는 클래스 분리를 통해 변화에의 적응성을 획득하는 반면, ISP는 인터페이스 분리를 통해 같은 목표에 도달한다.
5. DIP - 의존 역전 원칙 (Dependency Inversion Principle)
객체에서 어떤 클래스를 참조해서 사용해야하는 상황이 생긴다면, 그 클래스를 직접 참조하기보다 상위 요소(추상 클래스/인터페이스)로 참조해야한다.
의존 관계를 맺을 때 변화하기 쉽거나 자주 변화하는 것보다는 변화하기 어렵거나 거의 변화가 없는 것에 의존하라는 것이다.
추가
https://www.nextree.co.kr/p6960/
https://velog.io/@haero_kim/SOLID-%EC%9B%90%EC%B9%99-%EC%96%B4%EB%A0%B5%EC%A7%80-%EC%95%8A%EB%8B%A4
'코딩 > Java' 카테고리의 다른 글
Java - Predicate (0) | 2023.08.23 |
---|---|
Java - Arrays.asList(), List.of() (0) | 2023.07.17 |
Java - Long과 AtomicLong의 차이, AtomicLong에 대해 (0) | 2023.06.21 |
Java - 동시성 환경에서의 블로킹 vs 논 블로킹 (2/2) (0) | 2023.06.21 |
Java - 동시성 환경에서의 블로킹 vs 논 블로킹 (1/2) (0) | 2023.06.21 |