Categorize and tag all patterns #213

This commit is contained in:
Ilkka Seppala 2015-12-28 15:52:44 +02:00
parent fefb51c46e
commit 7ac7e3b097
55 changed files with 147 additions and 48 deletions

View File

@ -7,6 +7,7 @@ categories: Creational
tags: tags:
- Java - Java
- Gang Of Four - Gang Of Four
- Difficulty-Intermediate
--- ---
**Also known as:** Kit **Also known as:** Kit

View File

@ -7,6 +7,7 @@ categories: Structural
tags: tags:
- Java - Java
- Gang Of Four - Gang Of Four
- Difficulty-Beginner
--- ---
**Also known as:** Wrapper **Also known as:** Wrapper

View File

@ -4,7 +4,10 @@ title: Async Method Invocation
folder: async-method-invocation folder: async-method-invocation
permalink: /patterns/async-method-invocation/ permalink: /patterns/async-method-invocation/
categories: Concurrency categories: Concurrency
tags: Java tags:
- Java
- Difficulty-Intermediate
- Functional
--- ---
**Intent:** Asynchronous method invocation is pattern where the calling thread **Intent:** Asynchronous method invocation is pattern where the calling thread

View File

@ -7,6 +7,7 @@ categories: Structural
tags: tags:
- Java - Java
- Gang Of Four - Gang Of Four
- Difficulty-Intermediate
--- ---
**Also known as:** Handle/Body **Also known as:** Handle/Body

View File

@ -7,6 +7,7 @@ categories: Creational
tags: tags:
- Java - Java
- Gang Of Four - Gang Of Four
- Difficulty-Intermediate
--- ---
**Intent:** Separate the construction of a complex object from its **Intent:** Separate the construction of a complex object from its

View File

@ -4,7 +4,9 @@ title: Business Delegate
folder: business-delegate folder: business-delegate
permalink: /patterns/business-delegate/ permalink: /patterns/business-delegate/
categories: Business Tier categories: Business Tier
tags: Java tags:
- Java
- Difficulty-Intermediate
--- ---
**Intent:** The Business Delegate pattern adds an abstraction layer between **Intent:** The Business Delegate pattern adds an abstraction layer between

View File

@ -6,6 +6,8 @@ permalink: /patterns/caching/
categories: Other categories: Other
tags: tags:
- Java - Java
- Difficulty-Intermediate
- Caching
--- ---
**Intent:** To avoid expensive re-acquisition of resources by not releasing **Intent:** To avoid expensive re-acquisition of resources by not releasing

View File

@ -4,7 +4,11 @@ title: Callback
folder: callback folder: callback
permalink: /patterns/callback/ permalink: /patterns/callback/
categories: Other categories: Other
tags: Java tags:
- Java
- Difficulty-Beginner
- Functional
- Idiom
--- ---
**Intent:** Callback is a piece of executable code that is passed as an **Intent:** Callback is a piece of executable code that is passed as an

View File

@ -7,6 +7,7 @@ categories: Behavioral
tags: tags:
- Java - Java
- Gang Of Four - Gang Of Four
- Difficulty-Intermediate
--- ---
**Intent:** Avoid coupling the sender of a request to its receiver by giving **Intent:** Avoid coupling the sender of a request to its receiver by giving

View File

@ -7,6 +7,7 @@ categories: Behavioral
tags: tags:
- Java - Java
- Gang Of Four - Gang Of Four
- Difficulty-Intermediate
--- ---
**Also known as:** Action, Transaction **Also known as:** Action, Transaction

View File

@ -7,6 +7,7 @@ categories: Structural
tags: tags:
- Java - Java
- Gang Of Four - Gang Of Four
- Difficulty-Intermediate
--- ---
**Intent:** Compose objects into tree structures to represent part-whole **Intent:** Compose objects into tree structures to represent part-whole

View File

@ -3,7 +3,7 @@ layout: pattern
title: Data Access Object title: Data Access Object
folder: dao folder: dao
permalink: /patterns/dao/ permalink: /patterns/dao/
categories: Architectural categories: Persistence Tier
tags: tags:
- Java - Java
- Difficulty-Beginner - Difficulty-Beginner

View File

@ -7,6 +7,7 @@ categories: Structural
tags: tags:
- Java - Java
- Gang Of Four - Gang Of Four
- Difficulty-Beginner
--- ---
**Also known as:** Wrapper **Also known as:** Wrapper

View File

@ -4,7 +4,9 @@ title: Dependency Injection
folder: dependency-injection folder: dependency-injection
permalink: /patterns/dependency-injection/ permalink: /patterns/dependency-injection/
categories: Behavioral categories: Behavioral
tags: Java tags:
- Java
- Difficulty-Beginner
--- ---
**Intent:** Dependency Injection is a software design pattern in which one or **Intent:** Dependency Injection is a software design pattern in which one or

View File

@ -4,7 +4,10 @@ title: Double Checked Locking
folder: double-checked-locking folder: double-checked-locking
permalink: /patterns/double-checked-locking/ permalink: /patterns/double-checked-locking/
categories: Concurrency categories: Concurrency
tags: Java tags:
- Java
- Difficulty-Beginner
- Idiom
--- ---
**Intent:** Reduce the overhead of acquiring a lock by first testing the **Intent:** Reduce the overhead of acquiring a lock by first testing the

View File

@ -4,7 +4,10 @@ title: Double Dispatch
folder: double-dispatch folder: double-dispatch
permalink: /patterns/double-dispatch/ permalink: /patterns/double-dispatch/
categories: Other categories: Other
tags: Java tags:
- Java
- Difficulty-Intermediate
- Idiom
--- ---
**Intent:** Double Dispatch pattern is a way to create maintainable dynamic **Intent:** Double Dispatch pattern is a way to create maintainable dynamic

View File

@ -4,7 +4,9 @@ title: Event Aggregator
folder: event-aggregator folder: event-aggregator
permalink: /patterns/event-aggregator/ permalink: /patterns/event-aggregator/
categories: Structural categories: Structural
tags: Java tags:
- Java
- Difficulty-Beginner
--- ---
**Intent:** A system with lots of objects can lead to complexities when a **Intent:** A system with lots of objects can lead to complexities when a

View File

@ -4,7 +4,10 @@ title: Execute Around
folder: execute-around folder: execute-around
permalink: /patterns/execute-around/ permalink: /patterns/execute-around/
categories: Other categories: Other
tags: Java tags:
- Java
- Difficulty-Beginner
- Idiom
--- ---
**Intent:** Execute Around idiom frees the user from certain actions that **Intent:** Execute Around idiom frees the user from certain actions that

View File

@ -7,6 +7,7 @@ categories: Structural
tags: tags:
- Java - Java
- Gang Of Four - Gang Of Four
- Difficulty-Beginner
--- ---
**Intent:** Provide a unified interface to a set of interfaces in a subsystem. **Intent:** Provide a unified interface to a set of interfaces in a subsystem.

View File

@ -7,6 +7,7 @@ categories: Other
tags: tags:
- Java - Java
- Difficulty-Intermediate - Difficulty-Intermediate
- Functional
--- ---
**Intent:** A fluent interface provides an easy-readable, flowing interface, that often mimics a domain specific language. Using this pattern results in code that can be read nearly as human language. **Intent:** A fluent interface provides an easy-readable, flowing interface, that often mimics a domain specific language. Using this pattern results in code that can be read nearly as human language.

View File

@ -4,7 +4,9 @@ title: Flux
folder: flux folder: flux
permalink: /patterns/flux/ permalink: /patterns/flux/
categories: Presentation Tier categories: Presentation Tier
tags: Java tags:
- Java
- Difficulty-Intermediate
--- ---
**Intent:** Flux eschews MVC in favor of a unidirectional data flow. When a **Intent:** Flux eschews MVC in favor of a unidirectional data flow. When a

View File

@ -7,6 +7,8 @@ categories: Structural
tags: tags:
- Java - Java
- Gang Of Four - Gang Of Four
- Difficulty-Intermediate
- Caching
--- ---
**Intent:** Use sharing to support large numbers of fine-grained objects **Intent:** Use sharing to support large numbers of fine-grained objects

View File

@ -4,7 +4,9 @@ title: Front Controller
folder: front-controller folder: front-controller
permalink: /patterns/front-controller/ permalink: /patterns/front-controller/
categories: Presentation Tier categories: Presentation Tier
tags: Java tags:
- Java
- Difficulty-Intermediate
--- ---
**Intent:** Introduce a common handler for all requests for a web site. This **Intent:** Introduce a common handler for all requests for a web site. This

View File

@ -4,7 +4,9 @@ title: Half-Sync/Half-Async
folder: half-sync-half-async folder: half-sync-half-async
permalink: /patterns/half-sync-half-async/ permalink: /patterns/half-sync-half-async/
categories: Concurrency categories: Concurrency
tags: Java tags:
- Java
- Difficulty-Intermediate
--- ---
**Intent:** The Half-Sync/Half-Async pattern decouples synchronous I/O from **Intent:** The Half-Sync/Half-Async pattern decouples synchronous I/O from

View File

@ -4,7 +4,9 @@ title: Intercepting Filter
folder: intercepting-filter folder: intercepting-filter
permalink: /patterns/intercepting-filter/ permalink: /patterns/intercepting-filter/
categories: Behavioral categories: Behavioral
tags: Java tags:
- Java
- Difficulty-Intermediate
--- ---
**Intent:** Provide pluggable filters to conduct necessary pre-processing and **Intent:** Provide pluggable filters to conduct necessary pre-processing and

View File

@ -7,6 +7,7 @@ categories: Behavioral
tags: tags:
- Java - Java
- Gang Of Four - Gang Of Four
- Difficulty-Intermediate
--- ---
**Intent:** Given a language, define a representation for its grammar along **Intent:** Given a language, define a representation for its grammar along

View File

@ -4,7 +4,10 @@ title: Layers
folder: layers folder: layers
permalink: /patterns/layers/ permalink: /patterns/layers/
categories: Architectural categories: Architectural
tags: Java tags:
- Java
- Difficulty-Intermediate
- Spring
--- ---
**Intent:** Layers is an architectural style where software responsibilities are **Intent:** Layers is an architectural style where software responsibilities are

View File

@ -4,7 +4,11 @@ title: Lazy Loading
folder: lazy-loading folder: lazy-loading
permalink: /patterns/lazy-loading/ permalink: /patterns/lazy-loading/
categories: Other categories: Other
tags: Java tags:
- Java
- Difficulty-Beginner
- Idiom
- Caching
--- ---
**Intent:** Lazy loading is a design pattern commonly used to defer **Intent:** Lazy loading is a design pattern commonly used to defer

View File

@ -7,6 +7,7 @@ categories: Behavioral
tags: tags:
- Java - Java
- Gang Of Four - Gang Of Four
- Difficulty-Intermediate
--- ---
**Also known as:** Token **Also known as:** Token

View File

@ -7,6 +7,7 @@ categories: Integration
tags: tags:
- Java - Java
- EIP - EIP
- Camel
--- ---
**Intent:** When two applications communicate using a messaging system they do it by using logical addresses **Intent:** When two applications communicate using a messaging system they do it by using logical addresses

View File

@ -4,7 +4,9 @@ title: Model-View-Controller
folder: model-view-controller folder: model-view-controller
permalink: /patterns/model-view-controller/ permalink: /patterns/model-view-controller/
categories: Presentation Tier categories: Presentation Tier
tags: Java tags:
- Java
- Difficulty-Intermediate
--- ---
**Intent:** Separate the user interface into three interconnected components: **Intent:** Separate the user interface into three interconnected components:

View File

@ -4,7 +4,9 @@ title: Model-View-Presenter
folder: model-view-presenter folder: model-view-presenter
permalink: /patterns/model-view-presenter/ permalink: /patterns/model-view-presenter/
categories: Presentation Tier categories: Presentation Tier
tags: Java tags:
- Java
- Difficulty-Intermediate
--- ---
**Intent:** Apply a "Separation of Concerns" principle in a way that allows **Intent:** Apply a "Separation of Concerns" principle in a way that allows

View File

@ -4,7 +4,9 @@ title: MonoState
folder: monostate folder: monostate
permalink: /patterns/monostate/ permalink: /patterns/monostate/
categories: Creational categories: Creational
tags: Java tags:
- Java
- Difficulty-Beginner
--- ---
**Intent:** Enforces a behaviour like sharing the same state amongst all instances. **Intent:** Enforces a behaviour like sharing the same state amongst all instances.

View File

@ -4,7 +4,9 @@ title: Multiton
folder: multiton folder: multiton
permalink: /patterns/multiton/ permalink: /patterns/multiton/
categories: Creational categories: Creational
tags: Java tags:
- Java
- Difficulty-Beginner
--- ---
**Intent:** Ensure a class only has limited number of instances, and provide a **Intent:** Ensure a class only has limited number of instances, and provide a

View File

@ -4,7 +4,9 @@ title: Naked Objects
folder: naked-objects folder: naked-objects
permalink: /patterns/naked-objects/ permalink: /patterns/naked-objects/
categories: Architectural categories: Architectural
tags: Java tags:
- Java
- Difficulty-Expert
--- ---
**Intent:** The Naked Objects architectural pattern is well suited for rapid **Intent:** The Naked Objects architectural pattern is well suited for rapid

View File

@ -4,7 +4,9 @@ title: Null Object
folder: null-object folder: null-object
permalink: /patterns/null-object/ permalink: /patterns/null-object/
categories: Behavioral categories: Behavioral
tags: Java tags:
- Java
- Difficulty-Beginner
--- ---
**Intent:** In most object-oriented languages, such as Java or C#, references **Intent:** In most object-oriented languages, such as Java or C#, references

View File

@ -4,7 +4,10 @@ title: Object Pool
folder: object-pool folder: object-pool
permalink: /patterns/object-pool/ permalink: /patterns/object-pool/
categories: Creational categories: Creational
tags: Java tags:
- Java
- Difficulty-Beginner
- Caching
--- ---
**Intent:** When objects are expensive to create and they are needed only for **Intent:** When objects are expensive to create and they are needed only for

View File

@ -4,7 +4,9 @@ title: Poison Pill
folder: poison-pill folder: poison-pill
permalink: /patterns/poison-pill/ permalink: /patterns/poison-pill/
categories: Other categories: Other
tags: Java tags:
- Java
- Difficulty-Intermediate
--- ---
**Intent:** Poison Pill is known predefined data item that allows to provide **Intent:** Poison Pill is known predefined data item that allows to provide

View File

@ -4,7 +4,10 @@ title: Private Class Data
folder: private-class-data folder: private-class-data
permalink: /patterns/private-class-data/ permalink: /patterns/private-class-data/
categories: Other categories: Other
tags: Java tags:
- Java
- Difficulty-Beginner
- Idiom
--- ---
**Intent:** Private Class Data design pattern seeks to reduce exposure of **Intent:** Private Class Data design pattern seeks to reduce exposure of

View File

@ -3,15 +3,16 @@ layout: pattern
title: Producer Consumer title: Producer Consumer
folder: producer-consumer folder: producer-consumer
permalink: /patterns/producer-consumer/ permalink: /patterns/producer-consumer/
categories: Other categories: Concurrency
tags: Java tags:
- Java
- Difficulty-Intermediate
- I/O
--- ---
**Intent:** Producer Consumer Design pattern is a classic concurrency or threading pattern which reduces **Intent:** Producer Consumer Design pattern is a classic concurrency pattern which reduces
coupling between Producer and Consumer by separating Identification of work with Execution of coupling between Producer and Consumer by separating Identification of work with Execution of
Work.. Work.
![alt text](./etc/producer-consumer.png "Producer Consumer") ![alt text](./etc/producer-consumer.png "Producer Consumer")
@ -19,4 +20,3 @@ tags: Java
* decouple system by separate work in two process produce and consume. * decouple system by separate work in two process produce and consume.
* addresses the issue of different timing require to produce work or consuming work * addresses the issue of different timing require to produce work or consuming work

View File

@ -4,7 +4,9 @@ title: Property
folder: property folder: property
permalink: /patterns/property/ permalink: /patterns/property/
categories: Creational categories: Creational
tags: Java tags:
- Java
- Difficulty-Beginner
--- ---
**Intent:** Create hierarchy of objects and new objects using already existing **Intent:** Create hierarchy of objects and new objects using already existing

View File

@ -7,6 +7,7 @@ categories: Creational
tags: tags:
- Java - Java
- Gang Of Four - Gang Of Four
- Difficulty-Beginner
--- ---
**Intent:** Specify the kinds of objects to create using a prototypical **Intent:** Specify the kinds of objects to create using a prototypical

View File

@ -7,7 +7,7 @@ categories: Structural
tags: tags:
- Java - Java
- Gang Of Four - Gang Of Four
- Difficulty-Intermediate - Difficulty-Beginner
--- ---
**Also known as:** Surrogate **Also known as:** Surrogate

View File

@ -7,6 +7,7 @@ categories: Integration
tags: tags:
- Java - Java
- EIP - EIP
- Camel
--- ---
**Intent:** Broadcast messages from sender to all the interested receivers. **Intent:** Broadcast messages from sender to all the interested receivers.

View File

@ -3,10 +3,11 @@ layout: pattern
title: Reactor title: Reactor
folder: reactor folder: reactor
permalink: /patterns/reactor/ permalink: /patterns/reactor/
categories: Architectural categories: Concurrency
tags: tags:
- Java - Java
- Difficulty-Expert - Difficulty-Expert
- I/O
--- ---
**Intent:** The Reactor design pattern handles service requests that are delivered concurrently to an application by one or more clients. The application can register specific handlers for processing which are called by reactor on specific events. Dispatching of event handlers is performed by an initiation dispatcher, which manages the registered event handlers. Demultiplexing of service requests is performed by a synchronous event demultiplexer. **Intent:** The Reactor design pattern handles service requests that are delivered concurrently to an application by one or more clients. The application can register specific handlers for processing which are called by reactor on specific events. Dispatching of event handlers is performed by an initiation dispatcher, which manages the registered event handlers. Demultiplexing of service requests is performed by a synchronous event demultiplexer.

View File

@ -3,8 +3,11 @@ layout: pattern
title: Repository title: Repository
folder: repository folder: repository
permalink: /patterns/repository/ permalink: /patterns/repository/
categories: Architectural categories: Persistence Tier
tags: Java tags:
- Java
- Difficulty-Intermediate
- Spring
--- ---
**Intent:** Repository layer is added between the domain and data mapping **Intent:** Repository layer is added between the domain and data mapping

View File

@ -4,7 +4,10 @@ title: Resource Acquisition Is Initialization
folder: resource-acquisition-is-initialization folder: resource-acquisition-is-initialization
permalink: /patterns/resource-acquisition-is-initialization/ permalink: /patterns/resource-acquisition-is-initialization/
categories: Other categories: Other
tags: Java tags:
- Java
- Difficulty-Beginner
- Idiom
--- ---
**Intent:** Resource Acquisition Is Initialization pattern can be used to implement exception safe resource management. **Intent:** Resource Acquisition Is Initialization pattern can be used to implement exception safe resource management.

View File

@ -4,7 +4,9 @@ title: Servant
folder: servant folder: servant
permalink: /patterns/servant/ permalink: /patterns/servant/
categories: Structural categories: Structural
tags: Java tags:
- Java
- Difficulty-Beginner
--- ---
**Intent:** Servant is used for providing some behavior to a group of classes. **Intent:** Servant is used for providing some behavior to a group of classes.

View File

@ -4,7 +4,9 @@ title: Service Layer
folder: service-layer folder: service-layer
permalink: /patterns/service-layer/ permalink: /patterns/service-layer/
categories: Architectural categories: Architectural
tags: Java tags:
- Java
- Difficulty-Intermediate
--- ---
**Intent:** Service Layer is an abstraction over domain logic. Typically **Intent:** Service Layer is an abstraction over domain logic. Typically

View File

@ -4,7 +4,9 @@ title: Service Locator
folder: service-locator folder: service-locator
permalink: /patterns/service-locator/ permalink: /patterns/service-locator/
categories: Structural categories: Structural
tags: Java tags:
- Java
- Difficulty-Beginner
--- ---
**Intent:** Encapsulate the processes involved in obtaining a service with a **Intent:** Encapsulate the processes involved in obtaining a service with a

View File

@ -4,7 +4,9 @@ title: Specification
folder: specification folder: specification
permalink: /patterns/specification/ permalink: /patterns/specification/
categories: Behavioral categories: Behavioral
tags: Java tags:
- Java
- Difficulty-Beginner
--- ---
**Intent:** Specification pattern separates the statement of how to match a **Intent:** Specification pattern separates the statement of how to match a

View File

@ -4,7 +4,9 @@ title: Step Builder
folder: step-builder folder: step-builder
permalink: /patterns/step-builder/ permalink: /patterns/step-builder/
categories: Creational categories: Creational
tags: Java tags:
- Java
- Difficulty-Intermediate
--- ---
**Intent:** An extension of the Builder pattern that fully guides the user through the creation of the object with no chances of confusion. **Intent:** An extension of the Builder pattern that fully guides the user through the creation of the object with no chances of confusion.

View File

@ -4,7 +4,9 @@ title: Thread Pool
folder: thread-pool folder: thread-pool
permalink: /patterns/thread-pool/ permalink: /patterns/thread-pool/
categories: Concurrency categories: Concurrency
tags: Java tags:
- Java
- Difficulty-Intermediate
--- ---
**Intent:** It is often the case that tasks to be executed are short-lived and **Intent:** It is often the case that tasks to be executed are short-lived and

View File

@ -4,7 +4,9 @@ title: Tolerant Reader
folder: tolerant-reader folder: tolerant-reader
permalink: /patterns/tolerant-reader/ permalink: /patterns/tolerant-reader/
categories: Integration categories: Integration
tags: Java tags:
- Java
- Difficulty-Beginner
--- ---
**Intent:** Tolerant Reader is an integration pattern that helps creating **Intent:** Tolerant Reader is an integration pattern that helps creating

View File

@ -4,14 +4,14 @@ title: Twin
folder: twin folder: twin
permalink: /patterns/twin/ permalink: /patterns/twin/
categories: Creational categories: Creational
tags: Java tags:
- Java
- Difficulty-Intermediate
--- ---
**Intent:** Twin pattern is a design pattern which provides a standard solution to simulate multiple **Intent:** Twin pattern is a design pattern which provides a standard solution to simulate multiple
inheritance in java inheritance in java
![alt text](./etc/twin.png "Twin") ![alt text](./etc/twin.png "Twin")
**Applicability:** Use the Twin idiom when **Applicability:** Use the Twin idiom when
@ -21,4 +21,4 @@ inheritance in java
**Credits:** **Credits:**
* [Twin A Design Pattern for Modeling Multiple Inheritance](http://www.ssw.uni-linz.ac.at/Research/Papers/Moe99/Paper.pdf) * [Twin A Design Pattern for Modeling Multiple Inheritance](http://www.ssw.uni-linz.ac.at/Research/Papers/Moe99/Paper.pdf)