회고

20220608 TIL #인터페이스와 service 구현체

paran21 2022. 6. 15. 00:08

오늘 신기하고 재밌는 코드를 보았다.

우리 프로젝트는 데이터 유형만 다르고 기능은 비슷한 그룹이 여러 개 있는데, 각각 인터페이스와 서비스를 만들다 보니 중복되는 코드가 많다.

 

그래서 이 중 한 기능을 인터페이스를 하나로 통합하고 각각 데이터 유형별로 구현체가 있는 형태로 바꾸었다.

이렇게 하면 해당 service를 주입받는 controller에 해당하는 구현체를 넣어주면 된다.

@Service("exampleServiceType")과 같이 어노테이션을 통해 빈 이름을 설정하고 이 값으로 구현체를 받아올 수 있다.

 

비슷한 전략을 controller에서도 적용할 수 있다.

이런 방식으로 구현할 수 있다고 예시를 본 것을 참고해서, 간단하게 테스트 프로젝트를 만들어보았다.

 

https://paran21.tistory.com/175

 

[디자인패턴]controller pathvariable로 service 구현체 주입하기

인터페이스를 구현하는 여러 service 구현체가 있을 때, controller에서 pathvariable을 통해 구현체를 주입할 수 있다. 먼저 인터페이스를 하나 만들고, A와 B 두개의 구현체를 만들었다. public interface Test

paran21.tistory.com

 

간단한 예시지만 구현해보면서 인터페이스나 구현체, 전략패턴과 같은 디자인패턴 등에 더 흥미가 생겼다!!

 

깃허브 코드: https://github.com/paran22/interface_impl_prac