SOLID Principle

지노·2020년 11월 24일
0

Spring Framework

목록 보기
4/5

SRP - 단일 책임 원칙

  • 한 클래스는 하나의 책임만 가져야 한다.
  • 책임의 기준이 모호함 -> 기준을 변경의 파급 효과로 두자!
    • 변경이 있을 때 파급 효과가 적으면 단일 책임 원칙을 잘 따른 것!

OCP - 개방 폐쇄 원칙

  • 확장에는 열려있으나 변경에는 닫혀 있어야 한다.

  • 다형성 활용

  • 문제점

    // 기존
    MemberRepository m = new MemoryMemberRepository();
    
    // 변경
    MemberRepository m = new JdbcMemberRepository();
    • 구현 객체를 변경하려면 클라이언트 코드를 변경해야한다.
    • 객체를 생성, 연관관계를 맺어주는 별도의 생성자가 필요

LSP - 리스코프 치환 원칙

  • 하위 클래스는 인터페이스 규약을 다 지켜야 한다.

ISP - 인터페이스 분리 원칙

  • 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.
  • 인터페이스를 적절하게 분리!

DIP - 의존관계 역전 원칙

  • 추상화에 의존해야지, 구체화에 의존하면 안된다.

  • 구현 클래스와 구현체에 의존하지 말고, 인터페이스에 의존해야 한다.

  • 클라이언트가 인터페이스에 의존해야 유연하게 구현체를 변경할 수 있다.

  • 문제점

    // 기존
    MemberRepository m = new MemoryMemberRepository();
    
    // 변경
    MemberRepository m = new JdbcMemberRepository();
    • 인터페이스와 구현체에 모두 의존한 상태 -> DIP 위반

정리

  • 핵심은 다형성
  • 하지만, 다형성만으로는 OCP, DIP를 지킬 수 없다.
  • 무언가 필요하다...... -> Spring Container!!!
profile
Spring Framework를 이용한 웹 개발과 AWS 서비스, Container를 사용한 CI/CD 인프라에 관심이 있습니다.

0개의 댓글