A design pattern is a general repeatable solution to a commonly occurring problem in software design. They make your code scalable, robust and easy for developers to learn. The three categories - Creational, Structural and Behavioral. A major look through of the Scala specific design patterns such as the Lens pattern, duck typing, memoization, etc. These patterns let you explore the features of Scala and use a design pattern using those features which can help you solve your different use cases.