본문 바로가기

TIL

[2022-1-1] 자바 객체지향, SOLID 법칙

SOLID

SRP: 단일 책임 원칙(Single repsonsibility priciple)

  • 한 클래스는 하나의 책임만 져야한다.
  • 코드에 변경에 대해서 최대한 자유로울 수 있도록 개발하는 것. 즉 코드의 변경이 있을 때 이로인한 파급 효과가 적으면 좋은 SRP를 잘 지켰다고 할 수 있다.

 

OCP: 개방-폐쇄 원칙(Open/closed principle)

  • 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다.
  • 다형성을 활용해 구현. 인터페이스를 활용해 최소한의 변경으로 확장 할 수 있다. 하지만 변경을 완벽하게 피하진 못한다.
  • 이에 대해 Spring Framework가 통해 변경 없이 구현가능 하도록한다.(Spring 이 객체지향적인 어플리케이션 개발을 위한 프레임워크라는 개념)

 

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

  • 프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.
  • 하위 클래스는 인터페이스의 규약을 다 지켜야함. 기존의 상위 클래스의 의도를 깨지말아야함

 

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

  • 인터페이스를 너무 작지도 너무 크지도 않게 적절하게 분리한다. 범용 인터페이스의 분리.
  • 인터페이스를 명확하고 대체 가능성이 높도록 개발

 

DIP: 의존관계 역전 원칙(Dependency inversion principle)

  • 추상화에 의존해야지, 구체화에 의존하면 안된다.
  • 클라이언트 코드가 구현 클래스가 아니라 인터페이스를 의존해야한다.(역할과 구현의 분리)

 

마치며

SOLID 는 지금까지 공부하면서 몇번 마주쳐왔는데 내용적인 부분은 익숙해져도 볼때마다 어떤 알파벳이 어디에 대응되는제 헷갈리는 것 같다. 까먹지 않게 개발할 때 자주 떠올리도록 해봐야겠다.