객체지향 설계 5원칙

민태영·2023년 7월 11일

SOLID: 객체지향프로그래밍 및 설계의 다섯가지 기본원칙(원칙5가지의 앞글자를 따서 SOLID)

SOILD의 취지: 시간이 지나도 유지보수와 확장을 하기 쉬운 구조의 시스템을 만들고자 할 때 사용

SOLID의 종류:

  1. 단일 책임의 원칙

  2. 개발-폐쇄의 원칙

  3. 리스코프 치환 원칙

  4. 인터페이스 분리 원칙

  5. 의존성 역전 원칙

1) 단일 책임의 원칙 (Single Responsibility Principle, SRP)

  • 하나의 객체는 하나의 역할이 있어야함

  • 클래스나 모듈을 수정하는 이유가 단 하나뿐어야한다.

  • 동작하기만 하는 소프트웨어에 초점을 맞추는 것 보다 깨끗하고 정리된 소프트웨어를 작성하는 것에 초점을 둔다.

요약: 하나의 모듈이 여러 기능을 가지고 있으면 코드가 복잡해지고 가독성이 떨어지므로 하나의 모듈에 하나의 기능을 가지게하여 가독성을 높히고 시간이 지났을 때 수정을 용이하게 하기 위해

2) 개방-폐쇄의 원칙 (Open-Closed Principle, OCP)

  • 확장을 하기위해 개체를 변경해서는 안된다.

  • 기존코드를 변경하지 않아도 새로운 기능이나 구성요소를 추가할 수 있어야 한다.

요약: 모듈을 업그레이드 할 때 기존의 코드를 되도록 수정하지 않고 확장할 수 있는 코드를 짜라

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

  • 부모클래스의 행동규약을 자식클래스가 위반하지 않는것

  • 부모 클래스와 자식 클래스가 있는 경우 서로를 바꾸더라도 해당 프로그램에서 잘못된 결과를 도출하지 않는 것

  • 두 클래스를 모두 포함하는 클래스를 구현하여 인터페이스의 역할을 대체한다.

요약: 자식클래스가 지 입맛대로 부모클래스에게 물려받은 메서드나 코드를 바꾸지 말자

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

  • 여러 기능을 가진 인터페이스 하나보다 특정 기능을 가진 인터페이스 여러개가 좋다.
  • 인터페이스를 잘게 분리함으로서 클라이언트의 목적과 용도에 적합한 인터페이스만을 제공하는 것

요약: 클라이언트(인터페이스를 상속받는 클래스)가 어떤 기능을 필요로하고 필요치 않는가는 생각하면서 인터페이스의 기능을 잘게 분리 시켜놓는것이 클라이언트에서의 불필요한 에러처리를 예방할 수 있다.

5) 의존성 역전 원칙 (Dependency Inversion Principle, DIP)

  • 저수준의 모듈에 의해 높은 게층의 모듈이 영향을 받으면 안된다.
  • 구체화에 의존을 하면 저수준의 모듈이 높은 계층의 모듈에 영향을 주게된다.

요약: 저수준의 모듈을 수정하더라도 고수준의 모듈은 수정하지 않도록 설계해야한다.

profile
꿈을 꾸는 개발자

0개의 댓글