A collection of design & application patterns for Go language.
| Pattern | Description | Status |
|---|---|---|
| Factory | Provides an interface for creating families of releated objects | ✔ |
| Abstract Factory | Provides an interface for creating families of releated objects | ✔ |
| Singleton | Restricts instantiation of a type to one object | ✔ |
| Builder | Builds a complex object using simple objects | ✔ |
| Prototype | Instantiates and maintains a group of objects instances of the same type | ✔ |
| Pattern | Description | Status |
|---|---|---|
| Adapter | ✔ | |
| Bridge | Decouples an interface from its implementation so that the two can vary independently | ✔ |
| Filter | ✔ | |
| Composite | Encapsulates and provides access to a number of different objects | ✔ |
| Decorator | Adds behavior to an object, statically or dynamically | ✔ |
| Facade | Uses one type as an API to a number of others | ✔ |
| Flyweight | Reuses existing instances of objects with similar/identical state to minimize resource usage | ✔ |
| Proxy | Provides a surrogate for an object to control it's actions | ✔ |
| Pattern | Description | Status |
|---|---|---|
| Chain of Responsibility | Avoids coupling a sender to receiver by giving more than object a chance to handle the request | ✔ |
| Command | Bundles a command and arguments to call later | ✔ |
| Interpreter | interpreter | ✔ |
| Mediator | Connects objects and acts as a proxy | ✔ |
| Memento | Generate an opaque token that can be used to go back to a previous state | ✔ |
| Observer | Provide a callback for notification of events/changes to data | ✔ |
| State | Encapsulates varying behavior for the same object based on its internal state | ✔ |
| Strategy | Enables an algorithm's behavior to be selected at runtime | ✔ |
| Template | Defines a skeleton class which defers some methods to subclasses | ✔ |
| Visitor | Separates an algorithm from an object on which it operates | ✔ |
http://www.runoob.com/design-pattern/
