Spring Boot - 객체 지향 설계와 스프링

Lecture

Spring Boot

좋은 객체 지향 애플리케이션을 개발해주게 도와주는 프레임워크

다형성

자바의 오버라이딩을 생각해보자. 인터페이스를 구현한 객체 인스턴스를 실행 시점에 유연하게 변경할 수 있다. 이는 클라이언트를 변경하지 않고, 서버의 구현 기능을 유연하게 변경할 수 있어야 한다.

좋은 객체 지향 설계의 5가지 원칙(SOLID)

한 클래스는 하나의 책임만 가져야 한다. 하나의 책임이라는 것은 모호하므로, 중요한 기준은 변경이다. 변경이 있을 때 파급 효과가 적어야 이 원칙을 잘 따른 것이라 볼 수 있다.

소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다. 다형성을 생각해본다. 문제는 구현 객체를 변경하려면 클라이언트 코드를 변경해야 한다. 이는 다형성을 이용하였지만 원칙에 벗어난다. 이를 스프링 컨테이너가 해준다. 이는 이후에 코드를 작성하면서 한번 더 상기시켜준다.

인터페이스의 규약을 맞춰서 개발해야 한다.

분리하여 인터페이스 자체가 변해도 클라이언트에 영향을 주지 않는다. 대체 가능성이 높아지고 명확해진다.

프로그래머는 추상화에 의존해야지, 구체화에 의존하면 안된다. 역할에 의존하게 만들어야 한다.