A Future for Design Patterns

I'll conclude this book with some observations about design patterns and where they are heading.[15] As we have seen, a design pattern is a formal mechanism of documenting solutions to reoccurring software design problems. Christopher Alexander first introduced the concept of design patterns in civil architecture in 1977; they were later adapted to software design. The academic and commercial interest in software design patterns has grown dramatically over the last few years, and design patterns have been cataloged by a number of researchers.

Design patterns are mostly seen as solutions to software design issues. They are, of course, not the only solution to software design, and they should not be used to the exclusion of all others. Component-based design, software architecture, aspect-oriented programming, and refactoring also have a place. Viewed against the larger backdrop of software engineering, design patterns can be seen to present some of their own challenges:

Traceability

The traceability of a design pattern is hard to maintain when programming languages offer poor support for the underlying patterns. The physical implementation of a design pattern in a programming language can be scattered across a number of classes and thus hard to trace. In this respect, the implementations in this book have made considerable strides by using some of the more compact features of C#, such as delegates and query expressions.

Reusability

Design patterns are used ...

Get C# 3.0 Design Patterns now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.