Summary
In this chapter, we have seen how to use two other creational design patterns: the prototype and the singleton.
A prototype is used for creating exact copies of objects. In the general case of creating a copy of an object, what happens is that you make a new reference to the same object, a method called a shallow copy. But, if you need to duplicate the object, which is the case with a prototype, you make a deep copy.
As seen in the implementation example we discussed, using a prototype in Python is natural and based on built-in features, so it is not something even mentioned.
The singleton pattern can be implemented by making the singleton
 class use a metaclass, its type, having previously defined the said metaclass. As required, the metaclass's __call__()
method holds the code that ensures that only one instance of the class can be created.
The next chapter is about the adapter pattern, a structural design pattern that can be used to make two incompatible software interfaces compatible...