Scala Design Patterns
上QQ阅读APP看书,第一时间看更新

Chapter 4. Abstract and Self Types

Designing and writing high quality code in software engineering is important in order to have applications that are easy to extend and maintain. This activity requires the domain to be well known, correctly understood by a developer, and the requirements for the application to be well defined. If any of these is absent, then writing good programs becomes quite challenging.

Many times, engineers model the "world" using some abstractions. This helps with code extendibility and maintainability and removes duplication, which in many cases could be a reason for bugs. Good code, generally, will consist of multiple small components, which depend on and interact with each other. There are different approaches that help to achieve abstraction and interaction. We will look into the following topics in this chapter:

  • Abstract types
  • Polymorphism
  • Self types

The topics that we will cover here will be really useful when we start looking into some of the concrete design patterns. Understanding them will also help to understand the design patterns that rely on them. Moreover, the concepts covered in this chapter are useful just by themselves for writing good code.