인터페이스를 활용하여 중복된 소스 제거하기
우리는 평소 중복 코드를 많이 작성하고 있다. 이는 기본적으로 인터페이스의 활용할 줄 모르는 이유도 있습니다.
중복 코드를 제거하는 방법 중 한 가지가 인터페이스의 활용인데 그 방법을 설명하겠습니다.
인터페이스를 사용한다는 것은 변화되는 부분을 인터페이스로 추출한다는 의미입니다.
인터페이스로 추출해서 인터페이스로 파라미터를 받게 되면 구현체만 변경되면 중복을 제거할 수 있습니다.
즉, 클라이언트 코드는 구현체만 갈아 끼워주면 되는 것입니다.
핵심 로직은 클라이언트 코드가 알 필요가 없습니다.
즉, 인터페이스는 역할만 제공한다. 역할에 대한 책임은 구현체가 담당하는 것입니다.
인터페이스를 활용하여 다형성을 활용하게 됩니다.
인터페이스 활용 전
아래와 같이 모두 더하는 메서드, 2의 배수만 추출해서 더하는 메서드, 3보다 큰 수만 더하는 메서드가 있는데요
if문을 제외하고는 모두 중복되는 코드인데 이를 인터페이스로 추출해서 하나의 메서드로 만들 수 있습니다.
인터페이스로 변경되는 부분만 추출하기
if문의 조건을 인터페이스로 추출한 코드 입니다.
이제 인터페이스를 구현만 해주면 됩니다.
즉, 클라이언트 코드에서 구현 내용을 결정하게 하는 것입니다.
이는 DI(Dependency Injection)이라고 합니다. 의존성을 주입 해주는 것이죠. 보통 이렇게 외부에서 주입하는 것을 의미합니다.
스프링도 이런 식으로 외부에서 주입을 해주기 때문에 우리는 클라이언트에서 코드 변경없이 DI컨테이너에서 꺼내와서 자동으로
의존성 주입을 받을 수 있는 것입니다.
그럼 아래와 같이 람다를 활용하든, 익명 함수를 사용하든, 직접 클래스를 만들든 방법은 상황에 맞게 골라서 사용하시면 됩니다.
저는 람다를 사용 했습니다.
'Java' 카테고리의 다른 글
Java로 자료구조 이해하기 5편(Map) (0) | 2021.10.16 |
---|---|
Java로 자료구조 이해하기 4편(Set) (0) | 2021.10.16 |
JVM 동작 원리 (0) | 2021.10.11 |
Arrays의 asList가 뭐고 왜 써야 할까? (0) | 2021.10.08 |
hashCode와 toString (0) | 2021.10.05 |