Design patterns can be thought of as software architectural features that solve particular engineering problems. The standard work on the subject, Design Patterns (Gamma, Helm, Johnson & Vlissides —sometimes referred to as the Gang of Four— 1994) lists 23 separate patterns divided into Creational, Structural and Behavioral patterns. XSPEC12
uses about ten of them. We describe briefly below what specific use each pattern has and the issue within XSPEC12 that it addresses. We follow the definition of a pattern given in Gamma et al. with concrete
examples from our code.