티스토리 뷰

Spring/Spring Basic

Spring Basic : SOLID 원칙

Korean Eagle 2020. 7. 20. 20:12
728x90

1. SOLID는 객체지향 프로그래밍에서 지켜야 할 더 나은 소프트웨어를 개발을 위한 필수 지침이다.

  1-1 5가지의 원리는 의존성 관리에 대해 초점을 맞추고 있다.

  1-2 잘못설계된 의존성 관리는 코드 확장과 수정을 힘들게 만든다.

  1-3 스프링은 이 의존성에 작성에 대한 최소한의 제약만 제공하기 위한 프레임워크이다.

 

2. Single Responsibility - 하나의 클래스는 하나의 책임만 가져야 한다는 원리

 

3. Open Close - 확장에는 열려있고 수정에는 닫혀있어야 한다는 원리

  3-0 프로그램의 기능이 확장되거나 변경될 때 기존의 소스는 수정하지 않고 추가로 코드를 작성한다.

  3-1 인터페이스를 두고 다양하게 확장 가능하도록 구현

  3-2 변경될 것과 고정될 것을 구별한다. 변경될 것은 하나의 기능만을 가지는 하나 이상의 클래스로 작성한다.

 

4. Liskov Substitution - 클래스가 확장되더라도 기존의 기능과 호환성을 유지해야 한다는 원리

  4-1 기능을 추가하면 추가된 기능을 지원하는 인터페이스를 추가하여 제공한다. (Interface Segregation원리)

  4-2 성능이 향상되더라도 인터페이스를 통해 제공하는 기능은 동일해야 한다. 

 

5. Interface Segregation - 하나의 클래스를 다양한 관점에서 사용하는 경우 다양한 관점에 적합한 세부적인 인터페이스를 제공하는 것이 바람직하다. 

 

6. Dependency Inversion - 추상화 클래스와 인터페이스는 최대한 모호하게 정의하여 구현과 분리해야 한다는 원리

  6-1 구현에 따라서 추상화된 인터페이스가 변경되지 않아야 한다.

  6-2 구현에 따라 적절하게 변경하기 위해 추상인터페이스를 구현하는 Adapter클래스를 작성할 수 있다.

 

 


의존성 주입에 대한 몇 가지 권고사항

1. 생성자를 통한 의존성 주입을 권장한다. 스프링 4.2 부터는 생성자에 별도의 annotation없이도 주입을 자동 수행한다.

 

2. 주입받는 객체는 final로 설정하여 변경을 예방한다.

 

3. 객체를 주입받을 때는 Interface를 통하여 주입받는다.

728x90
댓글