SOLID
SRP: 단일 책임 원칙(Single repsonsibility priciple)
- 한 클래스는 하나의 책임만 져야한다.
- 코드에 변경에 대해서 최대한 자유로울 수 있도록 개발하는 것. 즉 코드의 변경이 있을 때 이로인한 파급 효과가 적으면 좋은 SRP를 잘 지켰다고 할 수 있다.
OCP: 개방-폐쇄 원칙(Open/closed principle)
- 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다.
- 다형성을 활용해 구현. 인터페이스를 활용해 최소한의 변경으로 확장 할 수 있다. 하지만 변경을 완벽하게 피하진 못한다.
- 이에 대해 Spring Framework가 통해 변경 없이 구현가능 하도록한다.(Spring 이 객체지향적인 어플리케이션 개발을 위한 프레임워크라는 개념)
LSP: 리스코프 치환 원칙(Liskov substitution principle)
- 프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.
- 하위 클래스는 인터페이스의 규약을 다 지켜야함. 기존의 상위 클래스의 의도를 깨지말아야함
ISP: 인터페이스 분리 원칙(Interface segregation principle)
- 인터페이스를 너무 작지도 너무 크지도 않게 적절하게 분리한다. 범용 인터페이스의 분리.
- 인터페이스를 명확하고 대체 가능성이 높도록 개발
DIP: 의존관계 역전 원칙(Dependency inversion principle)
- 추상화에 의존해야지, 구체화에 의존하면 안된다.
- 클라이언트 코드가 구현 클래스가 아니라 인터페이스를 의존해야한다.(역할과 구현의 분리)
마치며
SOLID 는 지금까지 공부하면서 몇번 마주쳐왔는데 내용적인 부분은 익숙해져도 볼때마다 어떤 알파벳이 어디에 대응되는제 헷갈리는 것 같다. 까먹지 않게 개발할 때 자주 떠올리도록 해봐야겠다.
'TIL' 카테고리의 다른 글
[2022-1-5]문제를 똑바로 읽자 / 스프링 핵심원리 기본편 AppConfig 구현 (0) | 2022.01.05 |
---|---|
[2022-1-4] Stack<E> 뜯어보기 (2) | 2022.01.05 |
[2022-1-3]프로그래머스 연습 문제 리팩토링 (0) | 2022.01.04 |
[2022-1-2]알고리즘 문제 풀이, 자바 프로젝트 생성 및 예제 개발 (0) | 2022.01.03 |
[2021-12-30,31] 프로그래머스 연습 + 정규표현식 (0) | 2022.01.01 |