This was the first chapter of this book that focused on some specific design patterns. We looked at the following creational design patterns—factory method, abstract factory, lazy initialization, singleton, builder, and prototype. Wherever relevant, we presented a diagram that visually showed class relationships. Also, we gave typical examples and went through the possible pitfalls and recommendations about when to use them.
In real-life software engineering, design patterns are usually combined together rather than being used in an isolated manner. Some examples include a prototype that is being supplied by a singleton instance, abstract factories that can store different prototypes and supply copies when objects are created, factories that can use builders to create instances, and so on. In some cases, design patterns could be interchangeable depending on the...