Summary
In this chapter, we went through the second group of behavioral design patterns. You are now familiar with iterators, mediators, memento, observer, state, template method, and the visitor design pattern. You might feel that these are purely object-oriented design patterns, which don't have much to do with functional programming, and you would be correct. They, however, are still relevant to Scala due to its hybrid nature and it is important to be aware of them and to know when to use them.
Some of the design patterns in this chapter are quite commonly used and can be seen in many projects, while others are a bit more rare and specific to some use cases. These patterns, combined with all the other ones you learned in the previous chapters, can be used together in order to build elegant and powerful solutions to real-world problems.
In the next chapter, we will dive deep into functional programming theory. We will cover some advanced concepts that will show us how powerful Scala, and...