본문 바로가기
IT/자바 스프링

좋은 객체 지향 설계의 5가지 원칙(SOLID)

by 노오-력 2023. 1. 17.

 

• SRP: 단일 책임 원칙(single responsibility principle)

• OCP: 개방-폐쇄 원칙 (Open/closed principle)

• LSP: 리스코프 치환 원칙 (Liskov substitution principle)

• ISP: 인터페이스 분리 원칙 (Interface segregation principle)

• DIP: 의존관계 역전 원칙 (Dependency inversion principle)

5가지 원칙의 앞글자만 따서 SOLID이다.

 

 

SRP 단일책임 원칙

한 클래스는 하나의 책임만 가져야한다.

중요한 기준은 변경이다. 변경이 있을 때 파급효과가 적으면 단일 책임 원칙을 잘 따른것이다.

 

OCP 개방-폐쇄 원칙

소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야한다.

확장에 열려있다는 것은 다형성을 활용하여 구현체를 바꿔 끼워서 확장할 수 있다는 것이고

변경에는 닫혀있다는 것은 기존코드는 변경하지 않아도되기때문에 변경에는 닫혀있다라는 의미이다.

 

LSP 리스코프 치환 원칙

프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서

하위 타입의 인스턴스로 바꿀 수 있어야한다.

다형성에서 하위 클래스는 인터페이스 규약을 다 지켜야한다는것,

다형성을 지원하기 위한 원칙, 인터페이스를 구현한 구현체를 믿고 사용하려면, 이 원칙이 필요하다.

 

ISP 인터페이스 분리 원칙

특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.

범용 인터페이스를 여러개의 인터페이스로 분리하면

인터페이스가 명확해 지고, 대체 가능성이 높아진다.

 

DIP 의존관계 역전 원칙

추상화에 의존하고, 구체화에 의존하면 안된다.

구현클래스에 의존하지 말고, 역할(인터페이스)에 의존해야한다는 뜻이다.

인터페이스에 의존해야 유연하게 구현체를 변경할 수 있기때문이다.

 

'IT > 자바 스프링' 카테고리의 다른 글

Junit5 예외 test - assertThrows  (0) 2023.01.18