-
5장 - 객체 지향 설계 5원칙 - SOLIDSpring Framework/스프링 입문을 위한 자바 객체 지향의 원리와 이해 2023. 4. 18. 00:01
SOLID
- SRP - 단일 책임 원칙
- 어떤 클래스를 변경해야 하는 이유는 오직 하나여야 한다
- 만약 if문들이 많이 보인다면 code smell을 고려해보아야 한다.
- OCP - 개방 폐쇄 원칙
- 자신의 확장에는 열려있어야 하고, 주변의 변화에는 닫혀있어야 한다.
- 운전자가 자동차를 타는데 마티즈를 타던 소나타를 타던 운전하는 습관이 바뀌면 안 된다.
- JDBC를 활용할 때 데이터베이스가 oracle, mysql, ms-sql로 바뀌어도 JDBC 인터페이스라는 완충 장치로 인해 애플리케이션은 변화에 영향을 받지 않는다.
- 편의점 직원이 판매하는 행위는 손님이 학생인지, 노인인지, 여자인지에 전혀 영향을 받지 않으며, 손님도 편의점 직원이 교대근무를 하더라도 구매라는 행위에 전혀 영향을 받지 않는다.
- LSP - 리스코프 치환 원칙
- 서브 타입은 언제나 자신의 기반 타입으로 교체할 수 있어야 한다.
- 아버지 춘향이 = new 딸() 이런 경우에는 딸을 하나 낳아서 춘향이라는 이름을 준 것까진 괜찮지만 아버지의 역할을 기대하고 있는 것이 이상하다.
- 동물 뽀로로 = new 펭귄() 이런 경우에는 펭귄이 동물의 역할을 수행할 수 있으니 정상적이다.
- 논리적으로 이상이 없어야 하며, 하위 클래스의 인스턴스는 상위형 객체 참조 변수에 대입해 상위 클래스의 인스턴스 역할을 수행하는데 문제가 없어야 한다.
- ISP - 인터페이스 분리 원칙
- 단일 책임 원칙과 유사한 부분이 있습니다. 예를 들어 복합기를 예시로 보면 복합기는 스캔, 인쇄, 복사 등의 역할을 수행합니다. 즉 3가지 역할을 수행하고 있습니다.
- 이런 경우 3개의 인터페이스로 분리하여 원하는 기능한 implements 하는 방식으로 분리할 수 있습니다.
- DIP - 의존 역전 원칙
- 자주 변경되는 구체 클래스에 의존하지 말아야 한다.
- List<String> myList = new ArrayList<String> 이런 코드를 작성하면 List는 인터페이스이기 때문에 List인터페이스를 구현하고 있는 어떤 객체를 ArrayList 대신 사용할 수 있게 됩니다.
'Spring Framework > 스프링 입문을 위한 자바 객체 지향의 원리와 이해' 카테고리의 다른 글
6장 - 스프링이 사랑한 디자인 패턴 (1) 2023.04.21 4장 - 자바가 확장한 객체 지향 (0) 2023.04.17 3장 - 자바와 객체 지향 (1) 2023.04.09 2장 자바와 절차적/구조적 프로그래밍 (0) 2023.04.02 1장 - 사람을 사랑한 기술 (0) 2023.04.01 - SRP - 단일 책임 원칙