이번 포스팅에서는 지난번에 포스팅했던 함수형 프로그래밍을 통한 방법과 기존의 객체지향 관점의 디자인 패턴과 비교를 해보고자 합니다.



이 포스팅을 올리려고 생각한 이유는 현재 보고 있는 책인 "JAVA8 IN ACTION" 에서는 메소드를 코드로 넘기는 것을 통해 간단히 동작 파라미터화를 하는 것을 보여줌으로써, 기존의 전략 패턴을 사장시킬 수 있을까에 대한 생각이 들었습니다.


하지만 꼭 그런 것은 아닌 경우가 몇가지가 있었습니다.


1. 전략 자체가 상태를 가지고 있어야 하는 경우.


보통 전략 패턴을 사용하여, 전략 객체를 만들 때, 필자의 경우에는 


* 전략이 상태를 가지고 있는 경우라면, interface를 만들고 concrete class 를 구현

* 전략이 상태를 가지지 않는 경우라면, enum을 사용해 singleton 으로 생성


으로 구현하였습니다.


함수형 프로그래밍에서 사용하는 메소드 역시, 특정 상태를 저장한 체로 유지할 수 없으며, 이는 상태가 필요한 전략에서는 사용할 수 없음을 말할 것 같습니다. 


2. 전략 자체가 구현해야할 추상 메소드가 다수 있는 경우.


AppleFilter 예제에서는 간단히 필터의 역할만을 Predicate 인터페이스를 통해 함수 자체로 넘기는 것이 가능했지만 구현해야할 메소드가 다수라면 기존 전략 패턴을 사용해야 할 것으로 보입니다.


물론 기능단위로 더욱 쪼개거나, 동작을 파라미터로 더 받을 수도 있겠지만, 아래 UML과 같이 한 전략에 대해서 각 구현 클래스가 concrete하게 가지고 있는 것이 유지보수성에서 더 좋아보입니다. 특히 한 전략에 대해서 해야할 다른 일들이 늘어난다면 더욱 이 방법을 해야할 것 같습니다. ㅡㅡ^.



아직 모든 장을 만나본 것은 아니지만, 간단하게 처리할 수 있는 비지니스 로직은 함수형프로그래밍으로, 보다 재사용성이 높고 복잡도가 있는 작업은 기존 객체지향적인 사고가 필요하지 않을까라는 생각이 드네요. 

(아직 책에서 이야기하는 함수형 사고가 안길러져서 그런 걸 수도 있습니다. ㅡㅡ^)



자바 8 인 액션
국내도서
저자 : 라울-게이브리얼 우르마(RAOUL-GABRIEL URMA),마리오 푸스코(MARIO FUSCO),앨런 마이크로프트(ALAN MYCROFT) / 우정은역
출판 : 한빛미디어 2015.04.01
상세보기


반응형
Posted by N'