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:
- Java
- Gang Of Four
- Difficulty-Intermediate
---
**Also known as:** Kit

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -4,7 +4,9 @@ title: Dependency Injection
folder: dependency-injection
permalink: /patterns/dependency-injection/
categories: Behavioral
tags: Java
tags:
- Java
- Difficulty-Beginner
---
**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
permalink: /patterns/double-checked-locking/
categories: Concurrency
tags: Java
tags:
- Java
- Difficulty-Beginner
- Idiom
---
**Intent:** Reduce the overhead of acquiring a lock by first testing the

View File

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

View File

@ -4,7 +4,9 @@ title: Event Aggregator
folder: event-aggregator
permalink: /patterns/event-aggregator/
categories: Structural
tags: Java
tags:
- Java
- Difficulty-Beginner
---
**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
permalink: /patterns/execute-around/
categories: Other
tags: Java
tags:
- Java
- Difficulty-Beginner
- Idiom
---
**Intent:** Execute Around idiom frees the user from certain actions that

View File

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

View File

@ -7,6 +7,7 @@ categories: Other
tags:
- Java
- 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.

View File

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

View File

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

View File

@ -4,7 +4,9 @@ title: Front Controller
folder: front-controller
permalink: /patterns/front-controller/
categories: Presentation Tier
tags: Java
tags:
- Java
- Difficulty-Intermediate
---
**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
permalink: /patterns/half-sync-half-async/
categories: Concurrency
tags: Java
tags:
- Java
- Difficulty-Intermediate
---
**Intent:** The Half-Sync/Half-Async pattern decouples synchronous I/O from

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -7,6 +7,7 @@ categories: Integration
tags:
- Java
- EIP
- Camel
---
**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
permalink: /patterns/model-view-controller/
categories: Presentation Tier
tags: Java
tags:
- Java
- Difficulty-Intermediate
---
**Intent:** Separate the user interface into three interconnected components:

View File

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

View File

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

View File

@ -4,7 +4,9 @@ title: Multiton
folder: multiton
permalink: /patterns/multiton/
categories: Creational
tags: Java
tags:
- Java
- Difficulty-Beginner
---
**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
permalink: /patterns/naked-objects/
categories: Architectural
tags: Java
tags:
- Java
- Difficulty-Expert
---
**Intent:** The Naked Objects architectural pattern is well suited for rapid

View File

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

View File

@ -4,7 +4,10 @@ title: Object Pool
folder: object-pool
permalink: /patterns/object-pool/
categories: Creational
tags: Java
tags:
- Java
- Difficulty-Beginner
- Caching
---
**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
permalink: /patterns/poison-pill/
categories: Other
tags: Java
tags:
- Java
- Difficulty-Intermediate
---
**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
permalink: /patterns/private-class-data/
categories: Other
tags: Java
tags:
- Java
- Difficulty-Beginner
- Idiom
---
**Intent:** Private Class Data design pattern seeks to reduce exposure of

View File

@ -3,15 +3,16 @@ layout: pattern
title: Producer Consumer
folder: producer-consumer
permalink: /patterns/producer-consumer/
categories: Other
tags: Java
categories: Concurrency
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
Work..
Work.
![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.
* addresses the issue of different timing require to produce work or consuming work

View File

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

View File

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

View File

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

View File

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

View File

@ -3,10 +3,11 @@ layout: pattern
title: Reactor
folder: reactor
permalink: /patterns/reactor/
categories: Architectural
categories: Concurrency
tags:
- Java
- 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.

View File

@ -3,8 +3,11 @@ layout: pattern
title: Repository
folder: repository
permalink: /patterns/repository/
categories: Architectural
tags: Java
categories: Persistence Tier
tags:
- Java
- Difficulty-Intermediate
- Spring
---
**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
permalink: /patterns/resource-acquisition-is-initialization/
categories: Other
tags: Java
tags:
- Java
- Difficulty-Beginner
- Idiom
---
**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
permalink: /patterns/servant/
categories: Structural
tags: Java
tags:
- Java
- Difficulty-Beginner
---
**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
permalink: /patterns/service-layer/
categories: Architectural
tags: Java
tags:
- Java
- Difficulty-Intermediate
---
**Intent:** Service Layer is an abstraction over domain logic. Typically

View File

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

View File

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

View File

@ -4,7 +4,9 @@ title: Step Builder
folder: step-builder
permalink: /patterns/step-builder/
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.

View File

@ -4,7 +4,9 @@ title: Thread Pool
folder: thread-pool
permalink: /patterns/thread-pool/
categories: Concurrency
tags: Java
tags:
- Java
- Difficulty-Intermediate
---
**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
permalink: /patterns/tolerant-reader/
categories: Integration
tags: Java
tags:
- Java
- Difficulty-Beginner
---
**Intent:** Tolerant Reader is an integration pattern that helps creating

View File

@ -4,14 +4,14 @@ title: Twin
folder: twin
permalink: /patterns/twin/
categories: Creational
tags: Java
tags:
- Java
- Difficulty-Intermediate
---
**Intent:** Twin pattern is a design pattern which provides a standard solution to simulate multiple
inheritance in java
![alt text](./etc/twin.png "Twin")
**Applicability:** Use the Twin idiom when
@ -21,4 +21,4 @@ inheritance in java
**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)