Skip to content

Commit f009bea

Browse files
committed
README: include implementation status for patterns
1 parent 5f56da0 commit f009bea

File tree

1 file changed

+74
-73
lines changed

1 file changed

+74
-73
lines changed

README.md

Lines changed: 74 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -13,106 +13,107 @@ A curated collection of idiomatic design & application patterns for Go language.
1313

1414
## Creational Patterns
1515

16-
| Pattern | Description |
17-
|:-------:| :---------- |
18-
| TODO: [Abstract Factory](creational/abstract_factory.md) | Provides an interface for creating families of releated objects |
19-
| TODO: [Builder](creational/builder.md) | Builds a complex object using simple objects |
20-
| TODO: [Factory Method](creational/factory.md) | Defers instantiation of an object to a specialized function for creating instances |
21-
| [Object Pool](creational/object_pool.md) | Instantiates and maintains a group of objects instances of the same type |
22-
| [Singleton](creational/singleton.md) | Restricts instantiation of a type to one object |
16+
| Pattern | Description | Status |
17+
|:-------:|:----------- |:------:|
18+
| [Abstract Factory](creational/abstract_factory.md) | Provides an interface for creating families of releated objects | |
19+
| [Builder](creational/builder.md) | Builds a complex object using simple objects | |
20+
| [Factory Method](creational/factory.md) | Defers instantiation of an object to a specialized function for creating instances | |
21+
| [Object Pool](creational/object_pool.md) | Instantiates and maintains a group of objects instances of the same type ||
22+
| [Singleton](creational/singleton.md) | Restricts instantiation of a type to one object ||
2323

2424
## Structural Patterns
2525

26-
| Pattern | Description |
27-
|:-------:| :---------- |
28-
| TODO: [Adapter](structural/.md) | Adapts otherwise incompatible interfaces to work together by adapting one to the other |
29-
| TODO: [Bridge](structural/bridge.md) | Decouples an interface from its implementation so that the two can vary independently |
30-
| TODO: [Composite](structural/composite.md) | Encapsulates and provides access to a number of different objects |
31-
| [Decorator](structural/decorator.md) | Adds behavior to an object, statically or dynamically |
32-
| TODO: [Facade](structural/facade.md) | Uses one type as an API to a number of others |
33-
| TODO: [Flyweight](structural/flyweight.md) | Reuses existing instances of objects with similar/identical state to minimize resource usage |
34-
| TODO: [Model View Controller](structural/model_view_controller.md) | Divides an app into three interconnected parts to separate internal representation from presentation to user |
35-
| TODO: [Proxy](structural/proxy.md) | Provides a surrogate for an object to control it's actions |
26+
| Pattern | Description | Status |
27+
|:-------:|:----------- |:------:|
28+
| [Adapter](structural/.md) | Adapts otherwise incompatible interfaces to work together by adapting one to the other | |
29+
| [Bridge](structural/bridge.md) | Decouples an interface from its implementation so that the two can vary independently | |
30+
| [Composite](structural/composite.md) | Encapsulates and provides access to a number of different objects | |
31+
| [Decorator](structural/decorator.md) | Adds behavior to an object, statically or dynamically ||
32+
| [Facade](structural/facade.md) | Uses one type as an API to a number of others | |
33+
| [Flyweight](structural/flyweight.md) | Reuses existing instances of objects with similar/identical state to minimize resource usage | |
34+
| [Model View Controller](structural/model_view_controller.md) | Divides an app into three interconnected parts to separate internal representation from presentation to user | |
35+
| [Proxy](structural/proxy.md) | Provides a surrogate for an object to control it's actions | |
3636

3737
## Behavioral Patterns
3838

39-
| Pattern | Description |
40-
|:-------:| :---------- |
41-
| TODO: [Chain of Responsibility](behavioral/chain_of_responsibility.md) | Avoids coupling a sender to receiver by giving more than object a chance to handle the request |
42-
| TODO: [Command](behavioral/command.md) | Bundles a command and arguments to call later |
43-
| TODO: [Mediator](behavioral/mediator.md) | Connects objects and acts as a proxy |
44-
| TODO: [Memento](behavioral/memento.md) | Generate an opaque token that can be used to go back to a previous state |
45-
| [Observer](behavioral/observer.md) | Provide a callback for notification of events/changes to data |
46-
| TODO: [Registry](behavioral/registry.md) | Keep track of all subclasses of a given class |
47-
| TODO: [State](behavioral/state.md) | Encapsulates varying behavior for the same object based on its internal state |
48-
| [Strategy](behavioral/strategy.md) | Enables an algorithm's behavior to be selected at runtime |
49-
| TODO: [Template](behavioral/template.md) | Defines a skeleton class which defers some methods to subclasses |
50-
| TODO: [Visitor](behavioral/visitor.md) | Separates an algorithm from an object on which it operates |
39+
| Pattern | Description | Status |
40+
|:-------:|:----------- |:------:|
41+
| [Chain of Responsibility](behavioral/chain_of_responsibility.md) | Avoids coupling a sender to receiver by giving more than object a chance to handle the request | |
42+
| [Command](behavioral/command.md) | Bundles a command and arguments to call later | |
43+
| [Mediator](behavioral/mediator.md) | Connects objects and acts as a proxy | |
44+
| [Memento](behavioral/memento.md) | Generate an opaque token that can be used to go back to a previous state | |
45+
| [Observer](behavioral/observer.md) | Provide a callback for notification of events/changes to data ||
46+
| [Registry](behavioral/registry.md) | Keep track of all subclasses of a given class | |
47+
| [State](behavioral/state.md) | Encapsulates varying behavior for the same object based on its internal state | |
48+
| [Strategy](behavioral/strategy.md) | Enables an algorithm's behavior to be selected at runtime ||
49+
| [Template](behavioral/template.md) | Defines a skeleton class which defers some methods to subclasses | |
50+
| [Visitor](behavioral/visitor.md) | Separates an algorithm from an object on which it operates | |
5151

5252
## Synchronization Patterns
5353

54-
| Pattern | Description |
55-
|:-------:| :---------- |
56-
| TODO: [Condition Variable](synchronization/condition_variable.md) | Provides a mechanism for threads to temporarily give up access in order to wait for some condition |
57-
| TODO: [Lock/Mutex](synchronization/mutex.md) | Enforces mutual exclusion limit on a resource to gain exclusive access |
58-
| TODO: [Monitor](synchronization/monitor.md) | Combination of mutex and condition variable patterns |
59-
| TODO: [Read-Write Lock](synchronization/read_write_lock.md) | Allows parallel read access, but only exclusive access on write operations to a resource |
60-
| [Semaphore](synchronization/semaphore.md) | Allows controlling access to a common resource |
54+
| Pattern | Description | Status |
55+
|:-------:|:----------- |:------:|
56+
| [Condition Variable](synchronization/condition_variable.md) | Provides a mechanism for threads to temporarily give up access in order to wait for some condition | |
57+
| [Lock/Mutex](synchronization/mutex.md) | Enforces mutual exclusion limit on a resource to gain exclusive access | |
58+
| [Monitor](synchronization/monitor.md) | Combination of mutex and condition variable patterns | |
59+
| [Read-Write Lock](synchronization/read_write_lock.md) | Allows parallel read access, but only exclusive access on write operations to a resource | |
60+
| [Semaphore](synchronization/semaphore.md) | Allows controlling access to a common resource ||
6161

6262
## Concurrency Patterns
6363

64-
| Pattern | Description |
65-
|:-------:| :---------- |
66-
| TODO: [N-Barrier](concurrency/barrier.md) | Prevents a process from proceeding until all N processes reach to the barrier |
67-
| [Bounded Parallelism](concurrency/bounded_parallelism.md) | Completes large number of independent tasks with resource limits |
68-
| TODO: [Broadcast](concurrency/broadcast.md) | Transfers a message to all recipients simultaneously |
69-
| TODO: [Coroutines](concurrency/coroutine.md) | Subroutines that allow suspending and resuming execution at certain locations |
70-
| TODO: [Generators](concurrency/generator.md) | Yields a sequence of values one at a time |
71-
| TODO: [Reactor](concurrency/reactor.md) | Demultiplexes service requests delivered concurrently to a service handler and dispatches them syncronously to the associated request handlers |
72-
| [Parallelism](concurrency/parallelism.md) | Completes large number of independent tasks |
73-
| TODO: [Producer Consumer](concurrency/producer_consumer.md) | Separates tasks from task executions |
74-
| TODO: [Scheduler](concurrency/scheduler.md) | Orchestrates steps to be performed as part of a task |
64+
| Pattern | Description | Status |
65+
|:-------:|:----------- |:------:|
66+
| [N-Barrier](concurrency/barrier.md) | Prevents a process from proceeding until all N processes reach to the barrier | |
67+
| [Bounded Parallelism](concurrency/bounded_parallelism.md) | Completes large number of independent tasks with resource limits ||
68+
| [Broadcast](concurrency/broadcast.md) | Transfers a message to all recipients simultaneously | |
69+
| [Coroutines](concurrency/coroutine.md) | Subroutines that allow suspending and resuming execution at certain locations | |
70+
| [Generators](concurrency/generator.md) | Yields a sequence of values one at a time | |
71+
| [Reactor](concurrency/reactor.md) | Demultiplexes service requests delivered concurrently to a service handler and dispatches them syncronously to the associated request handlers | |
72+
| [Parallelism](concurrency/parallelism.md) | Completes large number of independent tasks ||
73+
| [Producer Consumer](concurrency/producer_consumer.md) | Separates tasks from task executions | |
74+
| [Scheduler](concurrency/scheduler.md) | Orchestrates steps to be performed as part of a task | |
7575

7676
## Messaging Patterns
7777

78-
| Pattern | Description |
79-
|:-------:| :---------- |
80-
| [Fan-In](messaging/fan_in.md) | Funnels tasks to a work sink (e.g. server) |
81-
| [Fan-Out](messaging/fan_out.md) | Distributes tasks among workers (e.g. producer) |
82-
| TODO: [Futures & Promises](messaging/futures_promises.md) | Acts as a place-holder of a result that is initially unknown for synchronization purposes |
83-
| [Publish/Subscribe](messaging/publish_subscribe.md) | Passes information to a collection of recipients who subscribed to a topic |
84-
| TODO: [Push & Pull](messaging/push_pull.md) | Distributes messages to multiple workers, arranged in a pipeline |
78+
| Pattern | Description | Status |
79+
|:-------:|:----------- |:------:|
80+
| [Fan-In](messaging/fan_in.md) | Funnels tasks to a work sink (e.g. server) ||
81+
| [Fan-Out](messaging/fan_out.md) | Distributes tasks among workers (e.g. producer) ||
82+
| [Futures & Promises](messaging/futures_promises.md) | Acts as a place-holder of a result that is initially unknown for synchronization purposes | |
83+
| [Publish/Subscribe](messaging/publish_subscribe.md) | Passes information to a collection of recipients who subscribed to a topic ||
84+
| [Push & Pull](messaging/push_pull.md) | Distributes messages to multiple workers, arranged in a pipeline | |
8585

8686
## Stability Patterns
8787

88-
| Pattern | Description |
89-
|:-------:| :---------- |
90-
| TODO: [Bulkheads](stability/bulkhead.md) | Enforces a principle of failure containment (i.e. prevents cascading failures) |
91-
| [Circuit-Breaker](stability/circuit_breaker.md) | Stops the flow of the requests when requests are likely to fail |
92-
| TODO: [Deadline](stability/deadline.md) | Allows clients to stop waiting for a response once the probability of response becomes low (e.g. after waiting 10 seconds for a page refresh)|
93-
| TODO: [Fail-Fast](stability/fail_fast.md) | Checks the availability of required resources at the start of a request and fails if the requirements are not satisfied |
94-
| TODO: [Handshaking](stability/handshaking.md) | Asks a component if it can take any more load, if it can't the request is declined |
95-
| TODO: [Steady-State](stability/steady_state.md) | For every service that accumulates a resource, some other service must recycle that resource |
88+
| Pattern | Description | Status |
89+
|:-------:|:----------- |:------:|
90+
| [Bulkheads](stability/bulkhead.md) | Enforces a principle of failure containment (i.e. prevents cascading failures) | |
91+
| [Circuit-Breaker](stability/circuit_breaker.md) | Stops the flow of the requests when requests are likely to fail ||
92+
| [Deadline](stability/deadline.md) | Allows clients to stop waiting for a response once the probability of response becomes low (e.g. after waiting 10 seconds for a page refresh) ||
93+
| [Fail-Fast](stability/fail_fast.md) | Checks the availability of required resources at the start of a request and fails if the requirements are not satisfied | |
94+
| [Handshaking](stability/handshaking.md) | Asks a component if it can take any more load, if it can't the request is declined | |
95+
| [Steady-State](stability/steady_state.md) | For every service that accumulates a resource, some other service must recycle that resource | |
9696

9797
## Profiling Patterns
9898

99-
| Pattern | Description |
100-
|:-------:| :---------- |
101-
| TODO: [Timing Functions](profiling/timing.md) | Wraps a function and logs the execution |
99+
| Pattern | Description | Status |
100+
|:-------:|:----------- |:------:|
101+
| [Timing Functions](profiling/timing.md) | Wraps a function and logs the execution | |
102102

103103
## Idioms
104104

105-
| Pattern | Description |
106-
|:-------:| :---------- |
107-
| [Functional Options](idiom/functional-options.md) | Allows creating clean APIs with sane defaults and idiomatic overrides |
105+
| Pattern | Description | Status |
106+
|:-------:|:----------- |:------:|
107+
| [Functional Options](idiom/functional-options.md) | Allows creating clean APIs with sane defaults and idiomatic overrides ||
108108

109109
## Anti-Patterns
110110

111-
| Pattern | Description |
112-
|:-------:| :---------- |
113-
| TODO: [Cascading Failures](antipatterns/cascading_failures.md) | A failure in a system of interconnected parts in which the failure of a part causes a domino effect |
111+
| Pattern | Description | Status |
112+
|:-------:|:----------- |:------:|
113+
| [Cascading Failures](antipatterns/cascading_failures.md) | A failure in a system of interconnected parts in which the failure of a part causes a domino effect | |
114114

115115
## Other Patterns
116116

117-
| Pattern | Description |
118-
|:-------:| :---------- |
117+
| Pattern | Description | Status |
118+
|:-------:|:----------- |:------:|
119+
| | | | |

0 commit comments

Comments
 (0)