In this section, we'll go over some of the GoF design patterns, check whether they are pertinent to FP, and study how to implement them. Of course, some design patterns don't get an FP solution. As we said, for example, there's no equivalent for a Singleton, which implies the foreign concept of a globally accessed object. Additionally, while it's true that you may no longer need OOP-specific patterns, developers will still think in terms of those. Also, finally, since we're not going fully functional if an OOP pattern fits, why not use it?
We will be considering the following:
- Façade and Adapter, to provide new interfaces to other code
- Decorator (also known as Wrapper) to add new functionality to existing code
- Strategy, Template, and Command, to let you fine-tune algorithms by passing functions as parameters