객체지향 설계, SOLID

dev_butler·2025년 2월 6일
post-thumbnail

SRP 단일 책임 원칙

: 한 클래스는 하나의 책임만 가진다

  • 변경 시에 파급효과가 적으면 SRP를 잘 따른 것 (ex. 객체 사용분리, UI변경)

OCP 개방-폐쇄 원칙

: 다형성을 활용해 확정에는 열려있고, 변경에는 닫혀있게 한다

  • 객체를 생성, 연관관계를 맺는 별도의 설정이 필요함

LSP 리스코프 치환 원칙

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

  • ex. 자동차 interface의 악셀은 앞으로 가는 기능이기 때문에 뒤로 가도록 구현하면 LSP에 위반

ISP 인터페이스 분리 원칙

: 특정 클라이언트 위한 인터페이스 여러 개가 하나의 범용 인터페이스보다 낫다

  • ex1. 자동차 : 운전, 정비 인터페이스로 분리
  • ex2. 사용자 : 운전자, 정비사 클라이언트로 분리

DIP 의존관계 역전 원칙

: 구현클래스가 아닌, 인터페이스에 의존해야 한다

  • 구현체에 의존하면 변경이 매우 어려워짐

요약

  1. 객체지향은 다형성이 중요하다
  2. 그러나 다형성 만으로는 OCP(개방-폐쇄), DIP(의존관계 역전) 를 지킬 수 없다.
  3. 역할, 구현을 분리하는게 좋다.
  4. 인터페이스 부여가 좋지만, 기능 확장이 없을때는 구체클래스 선 도입 후 리팩터링을 통해 인터페이스를 도입할 수 있다.

0개의 댓글