JUnit is a widely-adopted unit testing framework for Java, developed by Kent Beck and Erich Gamma. In their discussion of JUnit 3.8’s design, the authors state:
Notice how TestCase, the central abstraction in the framework, is involved in four patterns. Pictures of mature object designs show this same ‘pattern density’. The star of the design has a rich set of relationships with the supporting players.
The notion of design pattern density has been around forever, but with little serious work being done to refine the idea. I’m calling on all experts (reading this blog…) to tell me whether they agree or disagree with the following statement:
A high design pattern density implies a high maturity of the design in which the patterns occur.
The assumption here of course is that the use of design patterns happened naturally and was not inflated by ulterior motives. So… yes or no: Does a high design pattern density indicate a mature design? Or, does it at least correlate positively?
Disclaimer: I’m using Kent’s and Erich’s statement as the motivation for a paper on design pattern density, and I would like to beef it up with further expert witness.