Strategy pattern

Define a family of algorithm, encapsulate each one, and make them interchangeable

Command pattern

Encapsulate a request as an object, thereby letting you parameterize clients with different requests, queue or log requests, and support undoable operations.

This is not required in a language that has closures, as the required block of code can be sent directly to the method.

Good and bad of patterns

Good common vocabulary

Design guide

Terrible implementation guide

Not a panacea

Terrible religion

Combination of patterns are useful

You may not use patterns because it inhibits your creativity

Patterns today

Many “classic” GoF patterns encapsulated or deprecated by language evolution

Iterator Command

Paradigms beyond just object-orientation

Language dictates the patterns

OOP are large and coarse-grained - end up making data structures

blub developer

understand the idiomatic patterns for your language/platform

clarity vs obscurity