Spring/스프링 이론

[Spring] 스프링과 객체 지향 설계

블로그 주인장 2023. 10. 6.

스프링이란?

 1. Spring Boot, Spring Framework 등 여러 프로젝트의 모음이다.

 2. 대표적인 웹 개발 뿐만 아니라, 여러 가지 기능을 제공한다.


스프링 프레임워크

 - Spring FrameWork 하위에는 JDBC, Web MVC 등등 여러 가지 하위 모듈을 가지고 있다.

 - 객체 지향의 대표적인 언어인 Java를 활용하여 객체 지향의 특징을 잘 활용할 수 있도록해준다.

 - 개발자들은 로직 구현에만 집중할 수 있게 해주는 프레임워크이다.


객체 지향 특징

  • 추상화
  • 캡슐화
  • 상속
  • 다형성

객체 지향 언어의 특징

1. 역할과 구현을 분리한다.

  • 클라이언트는 대상의 역할(인터페이스)
  • 클라이언트는 구현 대상의 내부 구조를 몰라도 된다.
  • 클라이언트는 구현 대상의 내부 구조가 변경되어도 영향을 받지 않는다.
  • 클라이언트는 대상 자체를 변경해도 영향을 받지 않는다.

2. 다형성의 본질

  • 인터페이스를 구현한 객체 인스턴스를 실행 시점에 변경 가능
  • 클라이언트를 변경하지 않고, 서버 구현 기능을 변경 가능

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

1. SRP(단일 책임 원칙)

  • 하나의 클래스는 하나의 책임만 가져야한다 -> 변경의 파급 효과가 적으면 단일 책임 원칙을 잘 지킨 것이다.

2. OCP(개방 폐쇄 원칙)

  • 확장에는 열려 있으나, 변경에는 닫혀있어야 한다. -> 다형성
  • 인터페이스를 구현한 새로운 클래스를 하나 만들어 새로운 기능을 구현
  • 객체를 생성하고, 연관 관계를 맺어주는 별도의 조립, 설정자가 필요하다.
  • if ~ else 에서 반복적인 케이스가 보이면, 클래스 분리를 고려한다.

3. LSP(리스코프 치환 원칙)

  • 객체는 프로그램의 정확성을 깨뜨리지 않으면서, 하위 타입의 인스턴스로 바꿀 수 있어야한다.(기능성 보장)
  • 상속보다는 if를 고려하고, 상속을 해도 비슷하게 만들어야 교체가 쉽다.

4. ISP(인터페이스 분리 원칙)

  • 특정 클라이언트를 위한 인터페이스가 여러 개를 사용하여 분리한다.
  • 해당 원칙을 지킬 경우, 인터페이스가 명확해지고, 대체 가능성이 높아진다.
  • 인터페이스도 OCP를 따라야 구현이 편리하고, 재활용성이 높아진다.

5. DIP(의존관계 역전 원칙)

  • 구체화에 의존하는 것이 아닌, 추상화에만 의존해야한다.
  • 역할과 구현을 철저히 분리한다.
  • 하위 모듈에 너무 의존하면 변경이 어렵기에, 중간에 if를 둬야 하위 모듈의 변경이 수월하다.
반응형

댓글