| Pattern | Description | Status | 
|---|---|---|
| Factory Method | Defers instantiation of an object to a specialized function for creating instances | ✔ | 
| Abstract Factory | Provides an interface for creating families of releated objects | ✔ | 
| Builder | Builds a complex object using simple objects | ✔ | 
| Singleton | Restricts instantiation of a type to one object | ✔ | 
| Pattern | Description | Status | 
|---|---|---|
| Strategy | Enables an algorithm's behavior to be selected at runtime | ✔ | 
| State | Encapsulates varying behavior for the same object based on its internal state | ✔ | 
| Command | Converts requests or simple operations into objects. | ✔ | 
| Iterator | Lets you traverse elements of a collection without exposing its underlying representation | ✔ | 
| Observer | Allows one objects to notify other objects about changes in their state. | ✔ | 
| Chain of Responsibility | Avoids coupling a sender to receiver by giving more than object a chance to handle the request | ✔ | 
| Pattern | Description | Status | 
|---|---|---|
| Adapter | allows objects with incompatible interfaces to collaborate. | ✔ | 
| Decorator | Adds behavior to an object, statically or dynamically | ✔ | 
| Proxy | Provides a surrogate for an object to control it's actions | ✔ | 
