What is a Design Pattern?
A design pattern solves a problem within a given context. The solution that is offered by implementing a pattern results in a system design structure, which balances the concerns of the design problem in a manner most appropriate for the given context. In “Understanding and Using Patterns in Software Development”, Dirk Riehle and Heinz Zullighaven offer a rather nice definition of what a design pattern is:
“A pattern is the abstraction from a concrete form which keeps recurring in specific non-arbitrary contexts.”
The ability to write good patterns is very difficult. A pattern should not only convey the facts about a system, but it should also tell a story about …show more content…
One might assume that this would enhance the learning of design patterns but the context provided, “Game of Life”, is too complicated and difficult to comprehend in its own right, that to add design patterns into the mix, it becomes too much for the reader to understand and the use of patterns is overshadowed by the complexity of the game itself.
Although the implementation of the “Game of Life” is intentionally made overly complex in order to depict the widespread usage of design patterns in the program. Holub states that this book is aimed at intermediate to advanced programmers but having reviewed this book I would tend not to agree with this assertion. I think Holub’s idea of using a particular context to illustrate each pattern was a novel idea but perhaps if he had chosen a less intensive idea the objective of the book may have been achieved more easily. There is probably more than one third of the book taken up by just printed code snippets that are not explained in any great detail and although Holub does indeed illustrate the interaction of design patterns, the idea is lost in the context as the patterns are swallowed up by the immense difficulty of the domain problem itself.
Fig.1 below is taken from Holubs’ book which shows a diagram that illustrates the interaction of the design patterns with each other. The diagram, I feel, has too much information contained in it for any reasonable learning to be achieved from it.