-
[객체 지향 설계] SOLID 원칙JAVA 2021. 9. 1. 20:04
SOLID 원칙
안녕하세요? 장장스입니다.
오늘은 객체 지향 설계의 기본 원칙으로 알려져 있는 SOLID 원칙에 대해 정리해보겠습니다.
[S] 단일 책임 원칙(SRP: single responsibility principle)
- 하나의 클래스는 하나의 기능만을 갖도록 구현한다. 즉, 어떤 클래스를 변경하는 이유는 하나이어야 한다.
- 한 클래스에서 여러 기능을 제공하게 되면 유지보수가 어렵다.
[O] 개방-폐쇄 원칙 (OCP: open/closed principle)
- 확장에는 열려 있으나 변경에는 닫혀 있어야 한다.
- 인터페이스를 상속받아 구현하는 클래스는 여러개가 될 수 있다. (확장의 개념)
- 인터페이스가 변경되면 인터페이스를 상속받은 클래스는 변경이 필요하게 된다. (변경의 개념)
- 인터페이스나 추상클래스를 통해 접근하도록 한다.
[L] 리스코프 치환 원칙 (LSP: liskov substitution principle)
- 하위 클래스는 항상 상위 클래스로 교체 될 수 있어야 한다. (다형성의 개념)
- 즉, 상위 클래스에 제공되는 여러 기능은 하위 클래스가 모두 사용가능 해야 한다.
- 인터페이스나 추상 클래스를 구현한 클래스를 믿고 사용하기 위해 리스코프 치환 원칙이 필요하다.
- IS-A 관계를 말한다.
[I] 인터페이스 분리 원칙 (ISP: Interface segregation principle)
- 제공하는 기능에 대한 인터페이스에만 종속적이어야 한다.
- 만약 하나의 객체가 여러 기능을 제공해야 한다면(단일 책임 원칙에 의해) 이때 클라이언트가 사용할 수 있는 여러 인터페이스로 분리하여 제공하면 클라이언트가 사용하지 않는 기능에 종속적이지 않을 수 있다.
[D] 의존관계 역전 원칙 (DIP: dependency inversion principle)
- 의존 관계는 구체적인 것보다는 추상적인 것에 의존한다.(인터페이스에 의존하도록 한다.)
- 구체적인 것은 이미 구현되어 있고 변하기 쉬운 것을 말한다.
- 추상적인 것은 인터페이스나 추상 클래스(상위 클래스)를 말한다.
Post
References
잘못된 코드나 내용이 있다면 댓글을 남겨주세요. 즉시 수정하도록 하겠습니다! :)
'JAVA' 카테고리의 다른 글
자바 스트림 설명부터 사용하는 이유 파헤쳐보기 #JAVA #스트림 (2) 2023.01.29 자바 람다 표현식 설명부터 사용법까지 완벽 정리 #JAVA #람다 (0) 2023.01.03 [JAVA] 자바 가비지 컬렉션 , Java Garbage Collection #GC (0) 2021.07.06 [JAVA] LinkedList를 접근 제어하는 ListIterator (0) 2021.01.24 [JAVA] DTO(VO) 리스트(list)를 특정 변수에 대해 정렬하기 (0) 2020.12.14