[Book] 공부하기/스프링 입문을 위한 자바 객체 지향의 원리와 이해

전략 패턴에 람다 적용하기

Ben의 프로그램 2025. 7. 31. 21:47
728x90
전략 패턴?
전략 패턴은 '클라이언트가 전략을 생성해 전략을 실행할 컨텍스트에 주입해주는 패턴'입니다. 

책의 예제에서는 무기-군수장교-군인 으로 묘사되었습니다. 무기는 전략, 군수장교는 클라이언트, 군인은 컨텍스트입니다.
클래스 다이어 그램으로 살펴보면 위와 같은데요. 전략 패턴의 Interface 를 함수형 인터페이스로 구성하고, 람다를 적용해보겠습니다. 

 

전략 패턴에 람다 적용하기
Lambda 와 MethodReference 도 같이 적용해보았다. 


 

전략 패턴에 Lambda 를 쓰면 얻을 수 있는 장점
우선, AddStrategy, SbustractStrategy 등 필요한 전략들마다 전략 인터페이스 구현체 클래스를 만들어 줄 필요가 없어집니다. 다만, DI 를 이용할 때는 Strategy 구현체가 필요하므로 이용 못한다는 단점이 있다. 

사실은, 구현체를 만들기만 하면 람다로 표현해서 사용할 수 있다. 
이것을 람다식으로 표현하면 아래와 같다.