Spring Boot - 객체 지향 설계와 스프링
Spring Boot
- 최근에는 기본으로 사용하고 있다.
- 웹 서버를 내장하는 Tomcat 등이 있어서 웹 서버를 설치하지 않아도 된다. 이 부분은 정말 편리한 부분이다.
- 손쉬운 빌드 구성을 위한 starter 종속성 제공
- 라이브러리를 자동 구성해준다. (외부 라이브러리 버전에 대해서는 더이상 고민하지 않아도 된다.)
좋은 객체 지향
애플리케이션을 개발해주게 도와주는 프레임워크
다형성
자바의 오버라이딩
을 생각해보자. 인터페이스를 구현한 객체 인스턴스를 실행 시점에 유연하게 변경할 수 있다. 이는 클라이언트
를 변경하지 않고, 서버의 구현 기능을 유연하게 변경할 수 있어야 한다.
좋은 객체 지향 설계의 5가지 원칙(SOLID)
- SRP - 단일 책임 원칙
한 클래스는 하나의 책임만 가져야 한다. 하나의 책임이라는 것은 모호하므로, 중요한 기준은 변경
이다. 변경이 있을 때 파급 효과가 적어야 이 원칙을 잘 따른 것이라 볼 수 있다.
OCP - 개방-폐쇄 원칙
소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다. 다형성
을 생각해본다. 문제는 구현 객체를 변경하려면 클라이언트 코드를 변경해야 한다. 이는 다형성을 이용하였지만 원칙에 벗어난다. 이를 스프링 컨테이너
가 해준다. 이는 이후에 코드를 작성하면서 한번 더 상기시켜준다.
- LSP - 리스코프 치환 원칙
인터페이스의 규약을 맞춰서 개발해야 한다.
- ISP - 인터페이스 분리 원칙
분리하여 인터페이스 자체가 변해도 클라이언트에 영향을 주지 않는다. 대체 가능성
이 높아지고 명확
해진다.
DIP - 외존관계 역전 원칙
프로그래머는 추상화에 의존해야지, 구체화에 의존하면 안된다.
역할에 의존하게 만들어야 한다.