A practical description of the software design patterns as they are mentioned in the 1994 book "Design Patterns - Elements of Reusable ObjectOriented Software" by the author group Gamma, Helm, Johnson and Vlissides (also called "Gang of Four", GoF for short). All patterns are explained in detail by means of examples and also critically appreciated. Furthermore, design principles of object-oriented programming are described and considered. All examples...