Chapter 1, The Design Patterns Out There and Setting Up Your Environment, is a brief introduction to design patterns, why they exist, and their different types. This chapter also provides you with tips on how you can set up your environment in order to easily run the examples in the book.
Chapter 2, Traits and Mixin Compositions, talks about traits and mixin compositions in Scala, multiple inheritance, and the rules of linearization that the Scala programming language uses when extending multiple traits.
Chapter 3, Unification, covers the various unifications that exist in Scala, which makes it as expressive as it is.
Chapter 4, Abstract and Self Types, covers the different types of polymorphism that exist in Scala, which help to make generic and extendible software.
Chapter 5, Aspect-Oriented Programming and Components, shows the concept of aspect-oriented programming and how it can be applied to Scala. This chapter also explains what components are and how to build applications using multiple small and simple components.
Chapter 6, Creational Design Patterns, covers the most popular creational design patterns from the Gang of Four. All patterns are viewed from the point of view of Scala, and alternatives are shown where applicable.
Chapter 7, Structural Design Patterns, goes through the most popular structural design patterns from the Gang of Four from the Scala point of view. This chapter also shows Scala alternatives where this is applicable and gives usage advice.
Chapter 8, Behavioral Design Patterns - Part One, covers part one of the behavioral design patterns from the Gang of Four viewed from the Scala perspective. This chapter also provides examples and usage advice.
Chapter 9, Behavioral Design Patterns - Part Two, covers part two of the behavioral design patterns from the Gang of Four viewed from the Scala perspective. This chapter also provides examples and usage advice.
Chapter 10, Functional Design Patterns - the Deep Theory, delves into pure functional programming concepts, such as monoids, functors, and monads. This chapter also explains these concepts in an understandable way, along with some examples.
Chapter 11, Applying What We Have Learned, presents design patterns that are specific to Scala. It is loaded with examples along with theory and usage advice.
Chapter 12, Real-Life Applications, introduces you to the Scalaz library. You will write a complete application that applies many of the concepts learned in the book, and this chapter will finish off with a summary.