Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How many non-GOF patterns can you name? [closed]

How many design-patterns can you name that are not GOF patterns?

Do you have any web-link that lists those names?

like image 983
user366312 Avatar asked Nov 14 '09 05:11

user366312


2 Answers

The Wikipedia page is always a good place to start. The "In Design Patterns" column in the linked table tells you which patterns were in the GOF book, and which weren't.

like image 85
Brian Willis Avatar answered Sep 28 '22 06:09

Brian Willis


For what its worth, Design Patterns on Wikipedia has a list of design patterns, including information on whether those patterns appear in the GOF book.

Off the top of my head, GOF excludes a whole category of design patterns related to concurrency, including double-checked locking, spin locking, and pretty much everything regarding pi calculus.

Additionally, some patterns seem to follow naturally from other programming paradigms:

  • There are lots of patterns in functional programming which don't appear in the GOF book. A frequently used design pattern involves the use of accumulator variables to transform non-tail recursive functions into tail-recursive functions. Additionally, the concept of a monad or what its used for would have been entirely alien to the original developers. Immutable objects are entirely absent from the GOF book.

  • Lisp's macro system could probably be considered a design pattern, or indicative of one.

  • I've never used a stack-based programming language, but I bet Forth programmers have plenty of tricks to get their algorithms to map cleanly to the stack.

  • In an abstract kind of way, you might consider the relationships between tables in a relational database schema a kind of design pattern: 1-to-many, many-to-one, many-to-many, one-to-one. More than that, there are predictable ways of modeling hierarchial data, and here's a fairly cookie-cutter way of modeling tagged unions in SQL.

  • etc.

like image 22
Juliet Avatar answered Sep 28 '22 06:09

Juliet