여기에 질문 내용을 남겨주세요.
영한님, 항상 좋은 강의 감사드립니다! 🙇♂
최근에 람다와 함수형 인터페이스 강의를 들으며
그동안 아무 생각 없이 사용하던 optional 의 orElseThrow() 같은 메서드들이
사실 supplier 같은 함수형 인터페이스를 활용한 구조라는 걸 더 명확히 이해할수 있었던것 같습니다.
다만 한 가지 궁금한 점이 있습니다.
실무에서도 직접 함수형 인터페이스를 정의해서 사용하는 경우가 많은지 궁금합니다!
강의 덕분에 이제 개념은 어느 정도 이해했는데, 막상 제가 진행 중인 프로젝트에 “이걸 어떻게 녹여내야 유지보수성이 올라갈까?” 하는 부분이 아직 감이 잘 오지 않는것 같습니다.
혹시 영한님이 실무에서 함수형 인터페이스나 람다를 적용할 때 ‘이럴 때 쓰면 좋다’ 싶은 포인트가 있다면 조언 부탁드립니다!
항상 좋은 인사이트와 강의 주셔서 감사합니다 🙏
함수형 인터페이스 활용
kdjin1215
작성일
25.10.10 20:59
조회수
118
댓글 1
안녕하세요. kdjin1215님
강의에서 말씀드린 것 처럼 함수형 인터페이스 자체가 대부분 이미 정의되어 있기 때문에, 직접 함수형 인터페이스를 정의해서 사용하는 경우는 드물고, 대신에 정의되어 있는 함수형 인터페이스를 활용하는 경우가 많습니다.
특히 실무에서는 전략 패턴 같은 것을 클래스를 만드는 대신 아주 간단히 람다(Lambda)로 구현하는 경우가 많습니다.
람다를 사용하면 익명 클래스나 별도의 구현 클래스 없이, 실행해야 할 코드 조각(로직)을 메서드의 인자로 직접 전달할 수 있기 때문입니다. 이것이 함수형 프로그래밍의 핵심적인 장점 중 하나입니다.
람다로 전략 패턴을 간결하게 구현하기
예를 들어, 상품 가격에 따라 다른 할인 전략을 적용해야 한다고 가정해 보겠습니다.
Before: 클래스를 사용하는 전통적인 방식
전략 패턴을 적용하기 위해 인터페이스와 여러 구현 클래스를 만들어야 했습니다.
단순한 할인 로직 하나를 위해 인터페이스와 클래스를 여러 개 만들어야 해서 코드가 길고 복잡합니다.
After: 람다를 활용한 현대적인 방식
java.util.function.Function<T, R>이라는 이미 정의된 함수형 인터페이스를 활용하면, 별도의 클래스 없이 훨씬 간결하게 코드를 작성할 수 있습니다.NewItemDiscount,SummerDiscount클래스가 모두 사라졌습니다. 대신 할인 로직을 람다 표현식으로 작성하여calculate메서드에 직접 전달했습니다. 코드의 양이 획기적으로 줄고, 어떤 로직이 적용되는지 한눈에 파악하기 쉬워집니다.그 외에 컬렉션의 데이터 처리나, 비동기 작업의 콜백 처리에 주로 활용됩니다.
결론적으로 람다와 함수형 인터페이스는 '코드 조각(동작)'을 파라미터처럼 자유롭게 주고받기 위한 기술입니다. 이를 잘 활용하면 불필요한 클래스 생성을 줄이고, 코드의 의도를 더 명확하게 드러낼 수 있어 유지보수성이 높은 코드를 작성하는 데 큰 도움이 됩니다.
감사합니다.
답글