Article · Wikipedia archive · Last revised May 28, 2026

Generation gap (pattern)

Generation gap is a software design pattern documented by John Vlissides that treats automatically generated code differently than code that was written by a developer. Modifications should not be made to generated code, as they would be overwritten if the code generation process was ever re-run, such as during recompilation. Vlissides proposed creating a subclass of the generated code which contains the desired modification. This might be considered an example of the template method pattern.

Last revised
May 28, 2026
Read time
≈ 1 min
Length
177 w
Citations
2
Source

Generation gap is a software design pattern documented by John Vlissides that treats automatically generated code differently than code that was written by a developer. Modifications should not be made to generated code, as they would be overwritten if the code generation process was ever re-run, such as during recompilation.1 Vlissides proposed creating a subclass of the generated code which contains the desired modification.2 This might be considered an example of the template method pattern.

Modern languages

Modern byte-code language like Java were in their early stages when Vlissides developed his ideas. In a language like C# or Java, this pattern may be followed by generating an interface, which is a completely abstract class. The developer would then hand-modify a concrete implementation of the generated interface.

C# have support for partial classes which is a class whose definition may be split into multiple pieces, within a single source-code file or across multiple files.

References

References

  1. Fowler, Martin. "Generation Gap". martinfowler.com/. Retrieved 9 August 2014.
  2. Vlissides, John (1998-06-22). Pattern Hatching: Design Patterns Applied. Addison-Wesley Professional. pp. 85–101. ISBN 978-0201432930.