SOLID

로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정리

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

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

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

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

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

 

SRP

하나의 클래스는 하나의 책임만 가짐.

변경이 있을 때, 변경으로 인한 파급 효과가 적어야 함.

 

OCP

확장에는 열려 있으니, 변경에는 닫혀 있어야 함.

(다형성) 인터페이스를 구현한 새로운 클래스를 만들어서 새로운 기능을 구현하면,

기존의 코드를 변경하는 것은 아니다.

-> 그러나 구현 객체를 변경하는 것도 코드를 변경하는 것이다.

해결은?
객체를 생성하고, 연관관계를 맺어주는 별도의 조립, 설정자가 필요 -> 스프링 컨테이너

 

 

LSP

객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 함.

"규약을 무조건 맞춰야 함" -> 기능적 보장

다형성을 지원하기 위한 원칙

 

 

ISP

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

클라이언트를 여러개로 분리하면 인터페이스가 명확해지고, 대체 가능성이 높아짐.

 

 

DIP

추상화에 의존해야함.

프로그램을 볼 때, 구현 클래스에 의존하는 것이 아닌 인터페이스에 의존 해야함.

인터페이스에 의존하여 바라볼 때, 유연한 구현체 변경이 가능함.

 

'Web BackEnd > TIL Memo' 카테고리의 다른 글

220318 TIL 메모, 영속성 컨텍스트  (0) 2022.03.18
220317 TIL 메모 JPA Entity  (0) 2022.03.18
이너 클래스와 이너 인터페이스  (0) 2022.01.05
인터페이스  (0) 2022.01.03
자바 제어자2  (0) 2022.01.02

+ Recent posts