Summary
In this chapter, we went through the concept of design patterns and how they can help us solve some of the commonly encountered problems in designing our applications. We then went through how to decide upon which design pattern to use, and if it is compulsory to choose one of the patterns that has already been defined. Moving further in the chapter, we explored some of the object-oriented capabilities of Python as a language, and also explored some examples of implementing abstract classes and metaclasses in Python, and how we can use them to build other classes and modify their behavior.
Equipped with the knowledge of object-oriented Python, we moved on to implement some of the common design patterns, such as the Singleton and Factory patterns in Python, and also explored the MVC pattern, learning about what problems they try to solve.
Now with the knowledge of design patterns with us, it is time for us to understand how we can make the process of handling the data inside our application efficient. The next chapter takes us through the journey of exploring the different techniques that will help us in efficiently handling the database operations that are going to take place inside our applications.