SOLID 원칙(객체 지향 설계)

SOLID 원칙은 5가지 원칙의 머리글자를 따와 만든 명칭입니다.

유지 보수와 확장이 쉬운 애플리케이션을 만들고자 할 때 이 원칙을 적용할 수 있습니다.

코드의 가독성을 높이고 확장이 쉬운 구조를 만드는 지침이라고 할 수 있습니다.

Single Responsibility Principle

  • 단일 책임 원칙

  • 모든 클래스는 하나의 책임만 가지며,클래스는 그 책임을 완전히 캡슐화해야 함을 일컫습니다.

  • 클래스나 함수가 여러 가지의 일을 하고 있을 경우 이를 분리 시킬 필요가 있습니다.

    • ex) 회원가입을 예시로 회원정보의 형식을 검사하는 기능과 그 내용을 서버로 전송하는 기능을 분리 한다.(회원정보의 형식이 변경되는 경우가 있을수 있고 서버에 전송하는 형식 및 방식이 변경될 수 있습니다.)

Open Closed Principle

  • 개방-폐쇄 원칙

  • 확장에 대해서는 열려 있어야, 수정에 대해서는 닫혀 있어야 합니다.

  • 변경 사항이 발생하더라도 다른 코드나 모듈에 영향이 없도록 하는것 입니다.

  • 확장하기 쉽게 추상클래스, 인터페이스를 활용하는 것이 좋습니다.

Liskov Substitution Principle

  • 리스코프 치환 원칙

  • 댜운 캐스팅된 인스턴스가 논리적으로 그 역할이 문제 없어야 합니다.

  • 파생 클래스를 만들 때, 이게 정말 올바르 상속의 관계를 갖는지 생각해봐야 합니다.

  • 상세한 예시

Interface Segregration Principle

  • 인터페이스 분리 원칙

  • 어떠한 클래스가 자신이 이용하지 않는 메서드에 의존하지 않아야 합니다.

  • 큰 덩어리의 인터페이스들을 구체적이고 작은 단위들로 분리시켜서 꼭 필요로 하는 기능들만을 남겨 인터페이스를 클라이언트에 특화되도록 분리 시키는것 입니다.

Dependency Inversion Principle

  • 의존 역전 원칙

  • 상위 모듈과 하위 모듈은 추상적인 약속을 기반으로 소통해야합니다.

  • 자세한 구현은 추상적인 개념에 기반해야 합니다.

  • 상세한 예시


참고 자료

wiki

찰스님 블로그

Yun’s님 velog

김예건님 블로그