티스토리 뷰

1. 단일 책임 원칙

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

-변경이 있을 때 파급 효과가 적으면 단일 책임 원칙을 잘 따른 것이다. 

 

2. OCP (Open/CLosed Principle) 개방-폐쇄 원칙 --> 중요!

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

-다형성을 활용

-하지만 다형성을 사용한다고해서 OCP 원칙을 지킬 수 있는 것은 아니다. 예를 들어 아래와 같이 MemberRepository 인터페이스의 구현체로 MemorymemberRespository를 JdbcMemberRepository로 확장한다고 했을 때 MemberService 클래스를 변경해야 함.

public class MemberSerivce {
	private MemberRepository memberRepository = new MemoryMemberRepository();
}
public class MemberSerivce {
	//private MemberRepository memberRepository = new MemoryMemberRepository();
    private MemberRepository memberRepository = new JdbcMemberRepository();
}

-이런 문제점을 해결하기 위해 객체를 생성하고 연관관계를 맺어주는 별도의 조립, 설정자가 필요한데 그것이 바로 스프링 이다.

 

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

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

-예를 들면 자동차 인터페이스의 액셀은 앞으로 가는 기능 이기 때문에 만약 뒤로 가는 기능으로 구현하다면 이 원칙을 위반하는 것.

 

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

-자동차 인터페이스가 있을때, 

자동차 인터페이스 -> 운전 인터페이스, 정비 인터페이스로 분리하면

사용자 클라이언트 -> 운전자 클라이언트, 정비사 클라이언트로 분리하여

예를 들어 정비 인터페이스 자체가 변해도 운전자 클라이언트에 영향을 주지 않음

 

5. DIP (Dependency inversion principle) 의존관계 역전 원칙 --> 중요!

-구체화에 의존하기 보다 추상화에 의존해야 한다. ex) 의존성 주입

-'역할'에 의존해야 한다. 

-클라이언트가 인터페이스에 의존해야 한다. 

public class MemberSerivce {
	//private MemberRepository memberRepository = new MemoryMemberRepository();
    private MemberRepository memberRepository = new JdbcMemberRepository();
}

-위 코드는 DIP 위반(인터페이스에 의존하지만 구현 클래스도 동시에 의존하고 있기 때문)

 

 

참고: 김영한-스프링 핵심 기본 원리(인프런)

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/

'Spring' 카테고리의 다른 글

롬북(Lombok)의 @RequiredArgsConstructor 기능  (0) 2023.08.16
컴포넌트 스캔  (0) 2023.08.15
@Configuration의 역할과 싱글톤  (0) 2023.08.14
싱글톤 패턴과 스프링 컨테이너  (0) 2023.08.14
스프링과 스프링부트  (0) 2023.08.09
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/03   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함