diff --git a/README.md b/README.md index 08fcc4b70..4724ea332 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,8 @@ -# Design pattern samples in Java. + + +# Design pattern samples in Java [![Join the chat at https://gitter.im/iluwatar/java-design-patterns](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/iluwatar/java-design-patterns?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) @@ -7,24 +11,19 @@ src="https://scan.coverity.com/projects/5634/badge.svg"/> - + +#### Browse and view all of the patterns on our Website: [iluwatar.github.io/java-design-patterns/](https://iluwatar.github.io/java-design-patterns/) + + + +# Table of Contents - Introduction - - List of Design Patterns - - Creational Patterns - - Structural Patterns - - Behavioral Patterns - - Concurrency Patterns - - Presentation Tier Patterns - - Business Tier Patterns - - Architectural Patterns - - Integration Patterns - - Idioms - Frequently Asked Questions - How to contribute - Versioning - Credits - License - + ## Introduction @@ -38,119 +37,6 @@ Reusing design patterns helps to prevent subtle issues that can cause major problems, and it also improves code readability for coders and architects who are familiar with the patterns. -## List of Design Patterns [↑](#top) - -### Creational Patterns [↑](#top) - -Creational design patterns abstract the instantiation process. They help make a -system independent of how its objects are created, composed, and represented. - -* [Abstract Factory](#abstract-factory) -* [Builder](#builder) -* [Factory Method](#factory-method) -* [Prototype](#prototype) -* [Property](#property) -* [Singleton](#singleton) -* [Step Builder](#step-builder) -* [Multiton](#multiton) -* [Object Pool](#object-pool) - -### Structural Patterns [↑](#top) - -Structural patterns are concerned with how classes and objects are composed to -form larger structures. - -* [Adapter](#adapter) -* [Bridge](#bridge) -* [Composite](#composite) -* [Decorator](#decorator) -* [Facade](#facade) -* [Flyweight](#flyweight) -* [Proxy](#proxy) -* [Service Locator](#service-locator) -* [Servant](#servant) -* [Event Aggregator](#event-aggregator) - -### Behavioral Patterns [↑](#top) - -Behavioral patterns are concerned with algorithms and the assignment of -responsibilities between objects. - -* [Chain of responsibility](#chain-of-responsibility) -* [Command](#command) -* [Interpreter](#interpreter) -* [Iterator](#iterator) -* [Mediator](#mediator) -* [Memento](#memento) -* [Observer](#observer) -* [State](#state) -* [Strategy](#strategy) -* [Template method](#template-method) -* [Visitor](#visitor) -* [Null Object](#null-object) -* [Intercepting Filter](#intercepting-filter) -* [Specification](#specification) -* [Dependency Injection](#dependency-injection) - -### Concurrency Patterns [↑](#top) - -Concurrency patterns are those types of design patterns that deal with the -multi-threaded programming paradigm. - -* [Double Checked Locking](#double-checked-locking) -* [Thread Pool](#thread-pool) -* [Async Method Invocation](#async-method-invocation) -* [Half-Sync/Half-Async](#half-sync-half-async) - -### Presentation Tier Patterns [↑](#top) - -Presentation Tier patterns are the top-most level of the application, this is -concerned with translating tasks and results to something the user can -understand. - -* [Model-View-Controller](#model-view-controller) -* [Model-View-Presenter](#model-view-presenter) -* [Flux](#flux) -* [Front Controller](#front-controller) - -### Business Tier Patterns [↑](#top) - -* [Business Delegate](#business-delegate) - -### Architectural Patterns [↑](#top) - -An architectural pattern is a general, reusable solution to a commonly occurring -problem in software architecture within a given context. - -* [Data Access Object](#dao) -* [Service Layer](#service-layer) -* [Naked Objects](#naked-objects) -* [Repository](#repository) - -### Integration Patterns [↑](#top) - -Integration patterns are concerned with how software applications communicate -and exchange data. - -* [Tolerant Reader](#tolerant-reader) - -### Idioms [↑](#top) - -A programming idiom is a means of expressing a recurring construct in one or -more programming languages. Generally speaking, a programming idiom is an -expression of a simple task, algorithm, or data structure that is not a built-in -feature in the programming language being used, or, conversely, the use of an -unusual or notable feature that is built into a programming language. What -distinguishes idioms from patterns is generally the size, the idioms tend to be -something small while the patterns are larger. - -* [Execute Around](#execute-around) -* [Poison Pill](#poison-pill) -* [Callback](#callback) -* [Lazy Loading](#lazy-loading) -* [Double Dispatch](#double-dispatch) -* [Resource Acquisition Is Initialization](#resource-acquisition-is-initialization) -* [Private Class Data](#private-class-data) # Frequently asked questions [↑](#top) @@ -225,16 +111,16 @@ Flyweight. * src (the source code of the pattern) * index.md (the description of the pattern) * pom.xml (the maven pom.xml) -3. Implement the code changes in your fork. Remember to add sufficient comments +4. Implement the code changes in your fork. Remember to add sufficient comments documenting the implementation. Reference the issue id e.g. #52 in your commit messages. -4. Format the code according to [Google Java Style Guide](https://google.github.io/styleguide/javaguide.html) +5. Format the code according to [Google Java Style Guide](https://google.github.io/styleguide/javaguide.html) * [Eclipse configuration](https://github.com/google/styleguide/blob/gh-pages/eclipse-java-google-style.xml) * [IntelliJ configuration](https://github.com/google/styleguide/blob/gh-pages/intellij-java-google-style.xml) -5. Create a simple class diagram from your example code and put it inside of the etc folder. -6. Add description of the pattern in index.md and link to the class diagram. +6. Create a simple class diagram from your example code and put it inside of the etc folder. +7. Add description of the pattern in index.md and link to the class diagram. (Attention, all internal links must be relative to the pattern subdirectory, else the links dont link properly on the website) -7. Create a pull request. +8. Create a pull request. **Structure of the index.md file** diff --git a/abstract-factory/index.md b/abstract-factory/index.md index 412e16009..cb229f4ab 100644 --- a/abstract-factory/index.md +++ b/abstract-factory/index.md @@ -3,10 +3,8 @@ layout: pattern title: Abstract Factory folder: abstract-factory permalink: /patterns/abstract-factory/ -categories: - - pattern_cat - - creational -tags: pattern_tag +categories: Creational +tags: Java --- **Intent:** Provide an interface for creating families of related or dependent diff --git a/adapter/index.md b/adapter/index.md index ee94ef47c..23aaeadcc 100644 --- a/adapter/index.md +++ b/adapter/index.md @@ -3,8 +3,8 @@ layout: pattern title: Adapter folder: adapter permalink: /patterns/adapter/ -categories: structural -tags: pattern_tag +categories: Structural +tags: Java --- **Intent:** Convert the interface of a class into another interface the clients diff --git a/async-method-invocation/index.md b/async-method-invocation/index.md index fdc30606e..dfcee0208 100644 --- a/async-method-invocation/index.md +++ b/async-method-invocation/index.md @@ -3,8 +3,8 @@ layout: pattern title: Async Method Invocation folder: async-method-invocation permalink: /patterns/async-method-invocation/ -categories: concurrency -tags: pattern_tag +categories: Concurrency +tags: Java --- **Intent:** Asynchronous method invocation is pattern where the calling thread diff --git a/bridge/index.md b/bridge/index.md index 9983dab40..8c05f14cf 100644 --- a/bridge/index.md +++ b/bridge/index.md @@ -3,8 +3,8 @@ layout: pattern title: Bridge folder: bridge permalink: /patterns/bridge/ -categories: structural -tags: pattern_tag +categories: Structural +tags: Java --- **Intent:** Decouple an abstraction from its implementation so that the two can diff --git a/builder/index.md b/builder/index.md index 78fb61fea..aa5c86201 100644 --- a/builder/index.md +++ b/builder/index.md @@ -3,8 +3,8 @@ layout: pattern title: Builder folder: builder permalink: /patterns/builder/ -categories: creational -tags: pattern_tag +categories: Creational +tags: Java --- **Intent:** Separate the construction of a complex object from its diff --git a/business-delegate/index.md b/business-delegate/index.md index af3c2108d..a55febaf9 100644 --- a/business-delegate/index.md +++ b/business-delegate/index.md @@ -3,8 +3,8 @@ layout: pattern title: Business Delegate folder: business-delegate permalink: /patterns/business-delegate/ -categories: business_tier -tags: pattern_tag +categories: Business Tier +tags: Java --- **Intent:** The Business Delegate pattern adds an abstraction layer between diff --git a/callback/index.md b/callback/index.md index 1d65e1514..b724f1edc 100644 --- a/callback/index.md +++ b/callback/index.md @@ -3,8 +3,8 @@ layout: pattern title: Callback folder: callback permalink: /patterns/callback/ -categories: pattern_cat -tags: pattern_tag +categories: Other +tags: Java --- **Intent:** Callback is a piece of executable code that is passed as an diff --git a/chain-of-responsibility/index.md b/chain-of-responsibility/index.md index 0dd250cbd..cf56fe3c6 100644 --- a/chain-of-responsibility/index.md +++ b/chain-of-responsibility/index.md @@ -3,8 +3,8 @@ layout: pattern title: Chain of responsibility folder: chain-of-responsibility permalink: /patterns/chain-of-responsibility/ -categories: behavioral -tags: pattern_tag +categories: Behavioral +tags: Java --- **Intent:** Avoid coupling the sender of a request to its receiver by giving diff --git a/command/index.md b/command/index.md index df512d023..23582406e 100644 --- a/command/index.md +++ b/command/index.md @@ -3,8 +3,8 @@ layout: pattern title: Command folder: command permalink: /patterns/command/ -categories: behavioral -tags: pattern_tag +categories: Behavioral +tags: Java --- **Intent:** Encapsulate a request as an object, thereby letting you diff --git a/composite/index.md b/composite/index.md index f50c32dd3..374e1d5aa 100644 --- a/composite/index.md +++ b/composite/index.md @@ -3,8 +3,8 @@ layout: pattern title: Composite folder: composite permalink: /patterns/composite/ -categories: pattern_cat -tags: pattern_tag +categories: Structural +tags: Java --- **Intent:** Compose objects into tree structures to represent part-whole diff --git a/dao/index.md b/dao/index.md index de481b3a5..7fd936c12 100644 --- a/dao/index.md +++ b/dao/index.md @@ -3,8 +3,8 @@ layout: pattern title: Data Access Object folder: dao permalink: /patterns/dao/ -categories: architectural -tags: pattern_tag +categories: Architectural +tags: Java --- **Intent:** Object provides an abstract interface to some type of database or diff --git a/decorator/index.md b/decorator/index.md index 0570935ca..02f129258 100644 --- a/decorator/index.md +++ b/decorator/index.md @@ -3,8 +3,8 @@ layout: pattern title: Decorator folder: decorator permalink: /patterns/decorator/ -categories: structural -tags: pattern_tag +categories: Structural +tags: Java --- **Intent:** Attach additional responsibilities to an object dynamically. diff --git a/dependency-injection/index.md b/dependency-injection/index.md index 884fdb502..f6ead97a7 100644 --- a/dependency-injection/index.md +++ b/dependency-injection/index.md @@ -3,8 +3,8 @@ layout: pattern title: Dependency Injection folder: dependency-injection permalink: /patterns/dependency-injection/ -categories: behavioral -tags: pattern_tag +categories: Behavioral +tags: Java --- **Intent:** Dependency Injection is a software design pattern in which one or diff --git a/double-checked-locking/index.md b/double-checked-locking/index.md index 371048b12..b1b0108ec 100644 --- a/double-checked-locking/index.md +++ b/double-checked-locking/index.md @@ -3,8 +3,8 @@ layout: pattern title: Double Checked Locking folder: double-checked-locking permalink: /patterns/double-checked-locking/ -categories: concurrency -tags: pattern_tag +categories: Concurrency +tags: Java --- **Intent:** Reduce the overhead of acquiring a lock by first testing the diff --git a/double-dispatch/index.md b/double-dispatch/index.md index 842913738..6847b7a41 100644 --- a/double-dispatch/index.md +++ b/double-dispatch/index.md @@ -3,8 +3,8 @@ layout: pattern title: Double Dispatch folder: double-dispatch permalink: /patterns/double-dispatch/ -categories: pattern_cat -tags: pattern_tag +categories: Other +tags: Java --- **Intent:** Double Dispatch pattern is a way to create maintainable dynamic diff --git a/event-aggregator/index.md b/event-aggregator/index.md index d27d3423e..fd42e9811 100644 --- a/event-aggregator/index.md +++ b/event-aggregator/index.md @@ -3,8 +3,8 @@ layout: pattern title: Event Aggregator folder: event-aggregator permalink: /patterns/event-aggregator/ -categories: structural -tags: pattern_tag +categories: Structural +tags: Java --- **Intent:** A system with lots of objects can lead to complexities when a diff --git a/execute-around/index.md b/execute-around/index.md index ec4c040bf..56ece4ac4 100644 --- a/execute-around/index.md +++ b/execute-around/index.md @@ -3,8 +3,8 @@ layout: pattern title: Execute Around folder: execute-around permalink: /patterns/execute-around/ -categories: pattern_cat -tags: pattern_tag +categories: Other +tags: Java --- **Intent:** Execute Around idiom frees the user from certain actions that diff --git a/facade/index.md b/facade/index.md index a2aba225f..0f6e2fbb1 100644 --- a/facade/index.md +++ b/facade/index.md @@ -3,8 +3,8 @@ layout: pattern title: Facade folder: facade permalink: /patterns/facade/ -categories: structural -tags: pattern_tag +categories: Structural +tags: Java --- **Intent:** Provide a unified interface to a set of interfaces in a subsystem. diff --git a/factory-method/index.md b/factory-method/index.md index 11ad77dda..fa30a4349 100644 --- a/factory-method/index.md +++ b/factory-method/index.md @@ -3,8 +3,8 @@ layout: pattern title: Factory Method folder: factory-method permalink: /patterns/factory-method/ -categories: creational -tags: pattern_tag +categories: Creational +tags: Java --- **Intent:** Define an interface for creating an object, but let subclasses diff --git a/flux/index.md b/flux/index.md index 970ef051c..c96b2b56a 100644 --- a/flux/index.md +++ b/flux/index.md @@ -3,8 +3,8 @@ layout: pattern title: Flux folder: flux permalink: /patterns/flux/ -categories: presentation_tier -tags: pattern_tag +categories: Presentation Tier +tags: Java --- **Intent:** Flux eschews MVC in favor of a unidirectional data flow. When a diff --git a/flyweight/index.md b/flyweight/index.md index 2a804e769..699c1ed54 100644 --- a/flyweight/index.md +++ b/flyweight/index.md @@ -3,8 +3,8 @@ layout: pattern title: Flyweight folder: flyweight permalink: /patterns/flyweight/ -categories: structural -tags: pattern_tag +categories: Structural +tags: Java --- **Intent:** Use sharing to support large numbers of fine-grained objects diff --git a/front-controller/index.md b/front-controller/index.md index 9c73ddb95..dd83bc396 100644 --- a/front-controller/index.md +++ b/front-controller/index.md @@ -3,8 +3,8 @@ layout: pattern title: Front Controller folder: front-controller permalink: /patterns/front-controller/ -categories: presentation_tier -tags: pattern_tag +categories: Presentation Tier +tags: Java --- **Intent:** Introduce a common handler for all requests for a web site. This diff --git a/half-sync-half-async/index.md b/half-sync-half-async/index.md index 025ba605f..b21c97bc4 100644 --- a/half-sync-half-async/index.md +++ b/half-sync-half-async/index.md @@ -3,8 +3,8 @@ layout: pattern title: Half-Sync/Half-Async folder: half-sync-half-async permalink: /patterns/half-sync-half-async/ -categories: concurrency -tags: pattern_tag +categories: Concurrency +tags: Java --- **Intent:** The Half-Sync/Half-Async pattern decouples synchronous I/O from diff --git a/intercepting-filter/index.md b/intercepting-filter/index.md index b8fa2a7f6..66cf04b62 100644 --- a/intercepting-filter/index.md +++ b/intercepting-filter/index.md @@ -3,8 +3,8 @@ layout: pattern title: Intercepting Filter folder: intercepting-filter permalink: /patterns/intercepting-filter/ -categories: behavioral -tags: pattern_tag +categories: Behavioral +tags: Java --- **Intent:** Provide pluggable filters to conduct necessary pre-processing and diff --git a/interpreter/index.md b/interpreter/index.md index d1ca73955..40030917a 100644 --- a/interpreter/index.md +++ b/interpreter/index.md @@ -3,8 +3,8 @@ layout: pattern title: Interpreter folder: interpreter permalink: /patterns/interpreter/ -categories: behavioral -tags: pattern_tag +categories: Behavioral +tags: Java --- **Intent:** Given a language, define a representation for its grammar along diff --git a/introduction/index.md b/introduction/index.md deleted file mode 100644 index 14df55cee..000000000 --- a/introduction/index.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: pattern -title: Introduction -folder: introduction -permalink: /patterns/introduction/ -permalink: /patterns/introduction/ -categories: pattern_cat -tags: pattern_tag ---- - - -Design patterns are formalized best practices that the programmer can use to -solve common problems when designing an application or system. - -Design patterns can speed up the development process by providing tested, proven -development paradigms. - -Reusing design patterns helps to prevent subtle issues that can cause major -problems, and it also improves code readability for coders and architects who -are familiar with the patterns. diff --git a/iterator/index.md b/iterator/index.md index 8b185ff83..63bdaf516 100644 --- a/iterator/index.md +++ b/iterator/index.md @@ -3,8 +3,8 @@ layout: pattern title: Iterator folder: iterator permalink: /patterns/iterator/ -categories: behavioral -tags: pattern_tag +categories: Behavioral +tags: Java --- **Intent:** Provide a way to access the elements of an aggregate object diff --git a/layers/index.md b/layers/index.md index bec7a5f14..1d12d3b4e 100644 --- a/layers/index.md +++ b/layers/index.md @@ -3,8 +3,8 @@ layout: pattern title: Layers folder: layers permalink: /patterns/layers/ -categories: architectural -tags: pattern_tag +categories: Architectural +tags: Java --- **Intent:** Layers is an architectural style where software responsibilities are diff --git a/lazy-loading/index.md b/lazy-loading/index.md index c1ecc1cf5..700892af0 100644 --- a/lazy-loading/index.md +++ b/lazy-loading/index.md @@ -3,8 +3,8 @@ layout: pattern title: Lazy Loading folder: lazy-loading permalink: /patterns/lazy-loading/ -categories: pattern_cat -tags: pattern_tag +categories: Other +tags: Java --- **Intent:** Lazy loading is a design pattern commonly used to defer diff --git a/mediator/index.md b/mediator/index.md index 735024298..e67218a53 100644 --- a/mediator/index.md +++ b/mediator/index.md @@ -3,8 +3,8 @@ layout: pattern title: Mediator folder: mediator permalink: /patterns/mediator/ -categories: behavioral -tags: pattern_tag +categories: Behavioral +tags: Java --- **Intent:** Define an object that encapsulates how a set of objects interact. diff --git a/memento/index.md b/memento/index.md index 99dd9fad4..b91e34739 100644 --- a/memento/index.md +++ b/memento/index.md @@ -3,8 +3,8 @@ layout: pattern title: Memento folder: memento permalink: /patterns/memento/ -categories: behavioral -tags: pattern_tag +categories: Behavioral +tags: Java --- **Intent:** Without violating encapsulation, capture and externalize an diff --git a/model-view-controller/index.md b/model-view-controller/index.md index f6390225e..5a12bc656 100644 --- a/model-view-controller/index.md +++ b/model-view-controller/index.md @@ -3,8 +3,8 @@ layout: pattern title: Model-View-Controller folder: model-view-controller permalink: /patterns/model-view-controller/ -categories: presentation_tier -tags: pattern_tag +categories: Presentation Tier +tags: Java --- **Intent:** Separate the user interface into three interconnected components: diff --git a/model-view-presenter/index.md b/model-view-presenter/index.md index d1ba373e3..6b0994077 100644 --- a/model-view-presenter/index.md +++ b/model-view-presenter/index.md @@ -3,8 +3,8 @@ layout: pattern title: Model-View-Presenter folder: model-view-presenter permalink: /patterns/model-view-presenter/ -categories: presentation_tier -tags: pattern_tag +categories: Presentation Tier +tags: Java --- **Intent:** Apply a "Separation of Concerns" principle in a way that allows diff --git a/multiton/index.md b/multiton/index.md index 47b9582b8..617bedb6a 100644 --- a/multiton/index.md +++ b/multiton/index.md @@ -3,8 +3,8 @@ layout: pattern title: Multiton folder: multiton permalink: /patterns/multiton/ -categories: creational -tags: pattern_tag +categories: Creational +tags: Java --- **Intent:** Ensure a class only has limited number of instances, and provide a diff --git a/naked-objects/index.md b/naked-objects/index.md index 45f5bec86..cef2a9ede 100644 --- a/naked-objects/index.md +++ b/naked-objects/index.md @@ -3,8 +3,8 @@ layout: pattern title: Naked Objects folder: naked-objects permalink: /patterns/naked-objects/ -categories: architectural -tags: pattern_tag +categories: Architectural +tags: Java --- **Intent:** The Naked Objects architectural pattern is well suited for rapid diff --git a/null-object/index.md b/null-object/index.md index c7e89272b..5127e8565 100644 --- a/null-object/index.md +++ b/null-object/index.md @@ -3,8 +3,8 @@ layout: pattern title: Null Object folder: null-object permalink: /patterns/null-object/ -categories: behavioral -tags: pattern_tag +categories: Behavioral +tags: Java --- **Intent:** In most object-oriented languages, such as Java or C#, references diff --git a/object-pool/index.md b/object-pool/index.md index ac08006f7..276d9a1f6 100644 --- a/object-pool/index.md +++ b/object-pool/index.md @@ -3,8 +3,8 @@ layout: pattern title: Object Pool folder: object-pool permalink: /patterns/object-pool/ -categories: creational -tags: pattern_tag +categories: Creational +tags: Java --- **Intent:** When objects are expensive to create and they are needed only for diff --git a/observer/index.md b/observer/index.md index 10036336c..d5b380a30 100644 --- a/observer/index.md +++ b/observer/index.md @@ -3,8 +3,8 @@ layout: pattern title: Observer folder: observer permalink: /patterns/observer/ -categories: behavioral -tags: pattern_tag +categories: Behavioral +tags: Java --- **Intent:** Define a one-to-many dependency between objects so that when one diff --git a/poison-pill/index.md b/poison-pill/index.md index 7d3b02bf4..cd60e1a68 100644 --- a/poison-pill/index.md +++ b/poison-pill/index.md @@ -3,8 +3,8 @@ layout: pattern title: Poison Pill folder: poison-pill permalink: /patterns/poison-pill/ -categories: pattern_cat -tags: pattern_tag +categories: Other +tags: Java --- **Intent:** Poison Pill is known predefined data item that allows to provide diff --git a/private-class-data/index.md b/private-class-data/index.md index b90ae654d..83c95d308 100644 --- a/private-class-data/index.md +++ b/private-class-data/index.md @@ -3,8 +3,8 @@ layout: pattern title: Private Class Data folder: private-class-data permalink: /patterns/private-class-data/ -categories: pattern_cat -tags: pattern_tag +categories: Other +tags: Java --- **Intent:** Private Class Data design pattern seeks to reduce exposure of diff --git a/property/index.md b/property/index.md index 802940f84..1c5b28db6 100644 --- a/property/index.md +++ b/property/index.md @@ -3,8 +3,8 @@ layout: pattern title: Property folder: property permalink: /patterns/property/ -categories: creational -tags: pattern_tag +categories: Creational +tags: Java --- **Intent:** Create hierarchy of objects and new objects using already existing diff --git a/prototype/index.md b/prototype/index.md index 7db6e8513..cab97f7dc 100644 --- a/prototype/index.md +++ b/prototype/index.md @@ -3,8 +3,8 @@ layout: pattern title: Prototype folder: prototype permalink: /patterns/prototype/ -categories: creational -tags: pattern_tag +categories: Creational +tags: Java --- **Intent:** Specify the kinds of objects to create using a prototypical diff --git a/proxy/index.md b/proxy/index.md index 4c29877f6..96ea40714 100644 --- a/proxy/index.md +++ b/proxy/index.md @@ -3,8 +3,8 @@ layout: pattern title: Proxy folder: proxy permalink: /patterns/proxy/ -categories: structural -tags: pattern_tag +categories: Structural +tags: Java --- **Intent:** Provide a surrogate or placeholder for another object to control diff --git a/repository/index.md b/repository/index.md index 3421a2075..a65044d29 100644 --- a/repository/index.md +++ b/repository/index.md @@ -3,8 +3,8 @@ layout: pattern title: Repository folder: repository permalink: /patterns/repository/ -categories: architectural -tags: pattern_tag +categories: Architectural +tags: Java --- **Intent:** Repository layer is added between the domain and data mapping diff --git a/resource-acquisition-is-initialization/index.md b/resource-acquisition-is-initialization/index.md index 7b283ab8c..c3aa6c045 100644 --- a/resource-acquisition-is-initialization/index.md +++ b/resource-acquisition-is-initialization/index.md @@ -3,8 +3,8 @@ layout: pattern title: Resource Acquisition Is Initialization folder: resource-acquisition-is-initialization permalink: /patterns/resource-acquisition-is-initialization/ -categories: pattern_cat -tags: pattern_tag +categories: Other +tags: Java --- **Intent:** Resource Acquisition Is Initialization pattern can be used to implement exception safe resource management. diff --git a/servant/index.md b/servant/index.md index a4205b9c0..38a8e2c60 100644 --- a/servant/index.md +++ b/servant/index.md @@ -3,8 +3,8 @@ layout: pattern title: Servant folder: servant permalink: /patterns/servant/ -categories: structural -tags: pattern_tag +categories: Structural +tags: Java --- **Intent:** Servant is used for providing some behavior to a group of classes. diff --git a/service-layer/index.md b/service-layer/index.md index d041c71ab..22afc1669 100644 --- a/service-layer/index.md +++ b/service-layer/index.md @@ -3,8 +3,8 @@ layout: pattern title: Service Layer folder: service-layer permalink: /patterns/service-layer/ -categories: architectural -tags: pattern_tag +categories: Architectural +tags: Java --- **Intent:** Service Layer is an abstraction over domain logic. Typically diff --git a/service-locator/index.md b/service-locator/index.md index 8bb12c01b..8c2aa6417 100644 --- a/service-locator/index.md +++ b/service-locator/index.md @@ -3,8 +3,8 @@ layout: pattern title: Service Locator folder: service-locator permalink: /patterns/service-locator/ -categories: structural -tags: pattern_tag +categories: Structural +tags: Java --- **Intent:** Encapsulate the processes involved in obtaining a service with a diff --git a/singleton/index.md b/singleton/index.md index b7aed47bb..7a280bdfa 100644 --- a/singleton/index.md +++ b/singleton/index.md @@ -3,8 +3,8 @@ layout: pattern title: Singleton folder: singleton permalink: /patterns/singleton/ -categories: creational -tags: pattern_tag +categories: Creational +tags: Java --- **Intent:** Ensure a class only has one instance, and provide a global point of diff --git a/specification/index.md b/specification/index.md index 81ed15e11..2609f50e5 100644 --- a/specification/index.md +++ b/specification/index.md @@ -3,8 +3,8 @@ layout: pattern title: Specification folder: specification permalink: /patterns/specification/ -categories: behavioral -tags: pattern_tag +categories: Behavioral +tags: Java --- **Intent:** Specification pattern separates the statement of how to match a diff --git a/state/index.md b/state/index.md index b2e4cc2c7..1b1e4717f 100644 --- a/state/index.md +++ b/state/index.md @@ -3,8 +3,8 @@ layout: pattern title: State folder: state permalink: /patterns/state/ -categories: behavioral -tags: pattern_tag +categories: Behavioral +tags: Java --- **Intent:** Allow an object to alter its behavior when its internal state diff --git a/step-builder/index.md b/step-builder/index.md index f3a7f2413..636504598 100644 --- a/step-builder/index.md +++ b/step-builder/index.md @@ -3,8 +3,8 @@ layout: pattern title: Step Builder folder: step-builder permalink: /patterns/step-builder/ -categories: creational -tags: pattern_tag +categories: Creational +tags: Java --- **Intent:** An extension of the Builder pattern that fully guides the user through the creation of the object with no chances of confusion. diff --git a/strategy/index.md b/strategy/index.md index 0f3dcd144..1d3250517 100644 --- a/strategy/index.md +++ b/strategy/index.md @@ -3,8 +3,8 @@ layout: pattern title: Strategy folder: strategy permalink: /patterns/strategy/ -categories: behavioral -tags: pattern_tag +categories: Behavioral +tags: Java --- **Intent:** Define a family of algorithms, encapsulate each one, and make them diff --git a/template-method/index.md b/template-method/index.md index e0d1ceb14..f647d2cd5 100644 --- a/template-method/index.md +++ b/template-method/index.md @@ -3,8 +3,8 @@ layout: pattern title: Template method folder: template-method permalink: /patterns/template-method/ -categories: behavioral -tags: pattern_tag +categories: Behavioral +tags: Java --- **Intent:** Define the skeleton of an algorithm in an operation, deferring some diff --git a/thread-pool/index.md b/thread-pool/index.md index 092c8b8a8..d9f00f428 100644 --- a/thread-pool/index.md +++ b/thread-pool/index.md @@ -3,8 +3,8 @@ layout: pattern title: Thread Pool folder: thread-pool permalink: /patterns/thread-pool/ -categories: concurrency -tags: pattern_tag +categories: Concurrency +tags: Java --- **Intent:** It is often the case that tasks to be executed are short-lived and diff --git a/tolerant-reader/index.md b/tolerant-reader/index.md index 75fa6ec70..7e0ef4f32 100644 --- a/tolerant-reader/index.md +++ b/tolerant-reader/index.md @@ -3,8 +3,8 @@ layout: pattern title: Tolerant Reader folder: tolerant-reader permalink: /patterns/tolerant-reader/ -categories: integration -tags: pattern_tag +categories: Integration +tags: Java --- **Intent:** Tolerant Reader is an integration pattern that helps creating diff --git a/visitor/index.md b/visitor/index.md index f9f5c87f8..eeb11a5e5 100644 --- a/visitor/index.md +++ b/visitor/index.md @@ -3,8 +3,8 @@ layout: pattern title: Visitor folder: visitor permalink: /patterns/visitor/ -categories: behavioral -tags: pattern_tag +categories: Behavioral +tags: Java --- **Intent:** Represent an operation to be performed on the elements of an object