Skip to content

Commit befd460

Browse files
authored
Merge pull request #4 from powerchordinc/fix/broken_links
Add TODO Information to README
2 parents 3da8fc4 + ef768c0 commit befd460

10 files changed

+74
-44
lines changed

Diff for: .travis.yml

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
script:
2+
- exit $(grep -c ".go)" README.md)

Diff for: README.md

+44-44
Original file line numberDiff line numberDiff line change
@@ -15,90 +15,90 @@ __Creational Patterns__:
1515

1616
| Pattern | Description |
1717
|:-------:| ----------- |
18-
| [Abstract Factory](abstract_factory.go) | Provides an interface for creating families of releated objects |
19-
| [Builder](builder/builder.go) | Builds a complex object using simple objects |
20-
| [Factory Method](factory_method.go) | Defers instantiation of an object to a specialized function for creating instances |
21-
| [Object Pool](object_pool/pool.go) | Instantiates and maintains a group of objects instances of the same type |
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 |
2222
| [Singleton](creational/singleton.md) | Restricts instantiation of a type to one object |
2323

2424
__Structural Patterns__:
2525

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

3737
__Behavioral Patterns__:
3838

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

5252
__Synchronization Patterns__:
5353

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

6262
__Concurrency Patterns__:
6363

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

7676
__Messaging Patterns__:
7777

7878
| Pattern | Description |
7979
|:-------:| ----------- |
8080
| [Fan-In](messaging/fan_in.md) | Funnels tasks to a work sink (e.g. server) |
81-
| [Fan-Out](messaging/fan_out.md) | Distributes tasks amongs workers (e.g. producer) |
82-
| [Futures & Promises](futures_promises.go) | Acts as a place-holder of a result that is initally unknown for synchronization purposes |
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 |
8383
| [Publish/Subscribe](messaging/publish_subscribe.md) | Passes information to a collection of recipients who subscribed to a topic |
84-
| [Push & Pull](push_pull.go) | Distributes messages to multiple workers, arranged in a pipeline |
84+
| TODO: [Push & Pull](messaging/push_pull.md) | Distributes messages to multiple workers, arranged in a pipeline |
8585

8686
__Stability Patterns__:
8787

8888
| Pattern | Description |
8989
|:-------:| ----------- |
90-
| [Bulkheads](bulkhead.go) | Enforces a principle of failure containment (i.e. prevents cascading failures) |
91-
| [Circuit-Breaker](circuitbreaker/circuit_breaker.go) | Stops the flow of the requests when requests are likely to fail |
92-
| [Deadline](deadline.go) | 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](fail_fast.go) | Checks the availability of required resources at the start of a request and fails if the requirements are not satisfied |
94-
| [Handshaking](handshaking.go) | Asks a component if it can take any more load, if it can't the request is declined |
95-
| [Steady-State](steady_state.go) | For every service that accumulates a resource, some other service must recycle that resource |
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 |
9696

9797
__Profiling Patterns__:
9898

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

103103
__Idioms__:
104104

@@ -110,7 +110,7 @@ __Anti-Patterns__:
110110

111111
| Pattern | Description |
112112
|:-------:| ----------- |
113-
| [Cascading Failures]() | A failure in a system of interconnected parts in which the failure of a part causes a domino effect |
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 |
114114

115115
__Other Patterns__:
116116

File renamed without changes.

Diff for: concurrency/bounded_parallelism.md

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# Bounded Parallelism Pattern
2+
3+
[Bounded parallelism](https://blog.golang.org/pipelines#TOC_9.) is similar to [parallelism](parallelism.md), but allows limits to be placed on allocation.
4+
5+
# Implementation and Example
6+
7+
An example showing implementation and usage can be found in [bounded_parallelism.go](bounded_parallelism.go).
File renamed without changes.

Diff for: concurrency/parallelism.md

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# Parallelism Pattern
2+
3+
[Parallelism](https://blog.golang.org/pipelines#TOC_8.) allows multiple "jobs" or tasks to be run concurrently and asynchronously.
4+
5+
# Implementation and Example
6+
7+
An example showing implementation and usage can be found in [parallelism.go](parallelism.go).
File renamed without changes.

Diff for: creational/object_pool.md

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# Object Pool Pattern
2+
3+
The [object pool design pattern](https://en.wikipedia.org/wiki/Object_pool_pattern) allows multiple instances to be kept in a collection ("pool") in order to have already been initialized when other instances are ready to use them.
4+
5+
# Implementation and Example
6+
7+
An example with implementation and usage can be found in [object_pool.go](object_pool.go).

Diff for: stability/circuit_breaker.md

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# Circuit Breaker Pattern
2+
3+
The [circuit breaker design pattern](https://en.wikipedia.org/wiki/Circuit_breaker_design_pattern) is used to detect failures and encapsulates logic of preventing a failure to reoccur constantly.
4+
5+
# Implementation and Example
6+
7+
An example of implementation and usage can be found in [circuitbreaker.go](circuitbreaker.go).
File renamed without changes.

0 commit comments

Comments
 (0)