Before digging into some actual design patterns, we have to make sure that many of the Scala language concepts are clear to the reader. Many of those concepts will later be used in implementing the actual design patterns, and being aware of the possibilities, limitations, and pitfalls are key factors that enable us to correctly and efficiently write code. Even though those concepts are not considered official design patterns, they could still be used to write good software. In some cases, due to the richness of Scala, some concepts could replace a design pattern by just using language features. After all, as we have already said before, design patterns are there because a programming language lacks features and is not rich enough to complete certain tasks.
The first topic that we will look into is about traits and mixin compositions. They provide...