SOLID 원칙에 대해서 설명해 주세요.

2025. 1. 3. 19:22·백엔드 면접

SOLID 원칙은 좋은 객체 지향 설계의 5가지 원칙입니다. 여기서 좋은 설계는 시스템에 새로운 요구사항이나 변경사항이 있을 때, 영향을 받는 범위가 적은 구조를 의미합니다. 즉, SOLID 원칙을 준수하면 시스템에 예상하지 못한 변경사항이 발생하더라도 유연하게 대처하고 확장하기 용이한 시스템 구조를 만들 수 있습니다.

 

단일 책임 원칙(Single Responsibility Principle)은 클래스는 오직 하나의 목적이나 이유로만 변경되어야 한다는 것을 의미합니다. 여기서 책임이란 단순히 메서드 개수보다는, 특정 사용자나 기능 요구사항에 따라 소프트웨어의 변경 요청을 처리하는 역할을 의미합니다.

즉, 클래스는 한 가지 이유로만 변경을 해야 하며,  이를 통해 변경이 발생했을 때 다른 기능에 영향을 덜 미치도록 설계되어 유지보수가 쉬워집니다.

 

개방 폐쇄 원칙(Open Closed Principle)은 확장에는 열려있고, 변경에는 닫혀있어야 함을 의미합니다. 확장이란 새로운 기능이 추가됨을 의미합니다. 즉, 기존의 코드를 변경하지 않으면서 새로운 기능을 추가할 수 있도록 설계되어야 합니다.

 

리스코프 치환 원칙(Liscov Subtitution Principle)은 서브 타입은 언제나 상위 타입으로 교체할 수 있어야 함을 의미합니다. 즉, 서브 타입은 상위 타입이 약속한 규약을 지켜야 함을 의미합니다. 이 원칙은 부모 클래스로 업캐스팅하는 것이 안전함을 보장하기 위해 존재합니다. 상위 타입에 대해 기대되는 역할과 행동 규약이 있는데 이를 벗어나면 안 됩니다. 만약 하위 타입이 상위 타입에 기대되는 역할을 만족하지 않는다면, 상위 타입을 사용하는 클라이언트 코드에서 하위 타입이 무엇인지 알 수 있어야 하는데, 이는 OCP를 준수하지 못하게 합니다.

 

인터페이스 분리 원칙(Interface Segregation Principle)은 클라이언트 입장에서 인터페이스를 분리해야 함을 의미합니다. 사용하지 않지만 의존성을 가지고 있다면 해당 인터페이스가 변경되는 경우 영향을 받습니다. 사용하는 기능만 제공하도록 인터페이스를 분리해 변경의 여파를 최소화해야 합니다.

 

의존성 역전 원칙(Dependency Inversion Principle)은 상위 수준의 모듈이 하위 수준의 모듈에 의존해서는 안 되며, 추상화에 의존해야 함을 의미합니다. 의존성 역전 원칙을 통해서 하위 레벨의 모듈은 개방 폐쇄 원칙을 준수하면서 새로운 기능 확장이 가능합니다.

'백엔드 면접' 카테고리의 다른 글

로드 밸런싱에 대해서 설명해 주세요.  (0) 2025.01.07
다중 서버 환경에서 세션 기반 인증 방식을 사용하는 경우 발생할 수 있는 문제점은 무엇이 있을까요?  (0) 2025.01.06
DB Replication에 대해서 설명해 주세요.  (0) 2025.01.02
Record에 대해서 설명해 주세요.  (0) 2025.01.01
HTTPS에 대해서 설명해 주세요.  (0) 2024.12.31
'백엔드 면접' 카테고리의 다른 글
  • 로드 밸런싱에 대해서 설명해 주세요.
  • 다중 서버 환경에서 세션 기반 인증 방식을 사용하는 경우 발생할 수 있는 문제점은 무엇이 있을까요?
  • DB Replication에 대해서 설명해 주세요.
  • Record에 대해서 설명해 주세요.
이런개발
이런개발
geun-00의 흔적 보관소
  • 이런개발
    내일이 기대되는 오늘
    이런개발
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • 백엔드 면접
      • SQL N
        • SUM, MAX, MIN
        • SELECT
        • GROUP BY
        • JOIN
      • Spring
      • JPA
      • 트러블슈팅
      • Infra
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    JPA
    raid
    토스 페이먼츠
    스프링
    티스토리챌린지
    데브코스
    자바
    백엔드 면접
    오블완
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
이런개발
SOLID 원칙에 대해서 설명해 주세요.
상단으로

티스토리툴바