A pattern is a distinct format for describing a proven solution to solving a general problem. Design patterns (DPs) are patterns specifically for software engineering.
Every pattern has the following characteristics:
- A short descriptive name
- A brief description of the context
- A thorough description of the problem
- A prescription for a solution
A programming pattern is a design pattern related solely to programming problems.
- Observer When an object changes state, other objects are notified
- State Changing object behavior depending on the state of an object
- Strategy Supplying different interchangeable variants of an algorithm in a class
- Template method Supplying an algorithm in which sub-classes can redefine certain steps without changing the overall algorithm
- Visitor Separating operations on an object from the object itself in an extendable way. The basis for "double dispatch".
- Singleton Implementing a class that has exactly one instance and a global point of access
- Abstract Factory Provide an interface for creating families of related or dependent objects without specifying their concrete classes.
- Builder Implementing a class that builds parts of a complex object.
- Composite Combining several objects into an object that has the same behavior as its parts
A usability patterns deal with interfaces, human-computer interaction and related subjects.
- Magnetism Making it easier and less frustrating to do precise targeting
- Shield Preventing that a critical action is performed by accident
- Context A single user command will perform the action appropriate to the context in which the command was issued
- Core Techniques and Algorithms in Game Programming
- Object-Oriented Design and Patterns
- Head First Design Patterns