An open API service indexing awesome lists of open source software.

https://github.com/ozgen/java-design-patterns

all design patterns examples in a single class.
https://github.com/ozgen/java-design-patterns

design-patterns java java-design-patterns java11 solid-principles

Last synced: 4 months ago
JSON representation

all design patterns examples in a single class.

Awesome Lists containing this project

README

        

# Java-Design-Patterns

This project includes SOLID principles
and all design patterns examples in Java-17

## Wiki

For detailed explanations of design patterns and SOLID principles, visit our [Wiki Page](https://github.com/ozgen/java-design-patterns/wiki/Java-Design-Patterns-Wiki).

## Design patterns :

* solid principles:
* [srp](https://github.com/ozgen/java-design-patterns/blob/main/src/main/java/solid/srp/SRP.java)
* [ocp](https://github.com/ozgen/java-design-patterns/blob/main/src/main/java/solid/ocp/OCP.java)
* [lsp](https://github.com/ozgen/java-design-patterns/blob/main/src/main/java/solid/lsp/LSP.java)
* [isp](https://github.com/ozgen/java-design-patterns/blob/main/src/main/java/solid/isp/ISP.java)
* [dip](https://github.com/ozgen/java-design-patterns/blob/main/src/main/java/solid/dip/DIP.java)
* builder design pattern:
* [facet builder](/src/main/java/builder/DemoFacetBuilder.java)
* [fluent builder](/src/main/java/builder/DemoFluentBuider.java)
* factories design pattern:
* [abstract factories](src/main/java/factories/AbstractFactoryDemo.java)
* [basic factories](src/main/java/factories/DemoFactory.java)
* [method factories](src/main/java/factories/DemoFactoryMethod.java)
* prototype design Pattern:
* [basic prototype](src/main/java/prototype/PrototypeDemo.java)
* [serialize prototype](src/main/java/prototype/SerializeDemo.java)
* [copy-constructor prototype](src/main/java/prototype/CopyContructorDemo.java)
* singleton design pattern:
* [basic singleton](src/main/java/singleton/BasicSingleton.java)
* [enum-based singleton](src/main/java/singleton/EnumBasedSingletonDemo.java)
* [inner-static singleton](src/main/java/singleton/InnerStaticSingletonDemo.java)
* [lazy singleton](src/main/java/singleton/LazySingletonDemo.java)
* [mutation singleton](src/main/java/singleton/Multiton.java)
* [testability singleton](src/main/java/singleton/SingletonTestabilityDemo.java)
* adapter design pattern:
* [adapter](src/main/java/adapter/AdapterDemo.java)
* bridge design pattern:
* [bridge](src/main/java/bridge/BridgeDemo.java)
* composite design pattern:
* [composite](src/main/java/composite/CompositeDemo.java)
* [neural-network](src/main/java/composite/neuralnetworks/NeuralNetwork.java)
* decorator design pattern:
* [adapter decorator](src/main/java/decorator/adapter/AdapterDecorator.java)
* [dynamic decorator](src/main/java/decorator/DynamicDecoratorComposition.java)
* [string decorator](src/main/java/decorator/StringDecorator.java)
* facade design pattern:
* [facade](src/main/java/facade/FacadeDemo.java)
* flyweight design pattern:
* [flyweight -1](src/main/java/flyweight/Demo.java)
* [flyweight -2](src/main/java/flyweight/FlyWeightDemo.java)
* [flyweight -3 (formatted text)](src/main/java/flyweight/FlyWeightDemoForFormattedText.java)
* proxy design pattern:
* [dynamic proxy](src/main/java/proxy/DynamicProxyDemo.java)
* [property proxy](src/main/java/proxy/PropertyProxyDemo.java)
* [protection proxy](src/main/java/proxy/ProtectionProxyDemo.java)
* chain of responsibility design pattern:
* [command-query cor](src/main/java/chainofresponsibility/CommandQuerySeparationDemo.java)
* [method cor](src/main/java/chainofresponsibility/MethodChainDemo.java)
* command design pattern:
* [command](src/main/java/command/CommandDemo.java)
* interpreter design pattern:
* [interpreter - 1](src/main/java/interpreter/InterpeterDemo.java)
* [interpreter - 2](src/main/java/interpreter/InterpreterExample.java)
* iterator design pattern:
* [iterator](src/main/java/iterator/IteratorDemo.java)
* [array-backed-drop](src/main/java/iterator/ArrayBackedPropDemo.java)
* mediator design pattern:
* [mediator](src/main/java/mediator/MediatorDemo.java)
* [event-broker](src/main/java/mediator/EventBrokerDemo.java)
* memento design pattern:
* [memento](src/main/java/memento/MementoDemo.java)
* null object design pattern:
* [null-object](src/main/java/nullobject/NullObjectDemo.java)
* observer design pattern:
* [observer](src/main/java/observer/ObserverDemo.java)
* [observer-event](src/main/java/observer/ObserverEventDemo.java)
* state design pattern:
* [state](src/main/java/state/StateDemo.java)
* [state-handmade](src/main/java/state/HandmadeStateDemo.java)
* [state-spring](src/main/java/state/SpringStateMachineDemo.java)
* strategy design pattern:
* [dynamic strategy](src/main/java/strategy/DynamicStrategyDemo.java)
* [static strategy](src/main/java/strategy/StaticStrategyDemo.java)
* template method design pattern:
* [template method](src/main/java/templatemethod/TemplateMethodDemo.java)
* visitor design pattern:
* [intrusive visitor](src/main/java/visitor/VisitorDemo.java)
* [reflective visitor](src/main/java/visitor/ReflectiveVisitorDemo.java)
* [classic visitor](src/main/java/visitor/ClassicVisitorDemo.java)
* [acyclic visitor](src/main/java/visitor/AcyclicVisitorDemo.java)