diff --git a/README.md b/README.md index 5937eba..fd165e8 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,57 @@ # Java Design Patterns -A repository that contains design patterns in Java. +Design patterns are **well-proved solution** for solving the specific problem/task. + +## Advantages of a Design Pattern +* They are reusable in multiple projects. +* They provide the solutions that help to define the system architecture. +* They capture the software engineering experiences. +* They provide transparency to the design of an application. +* They are well-proved and testified solutions since they have been built upon the knowledge and experience of expert software developers. +* Design patterns don't guarantee an absolute solution to a problem. They provide clarity to the system architecture and the possibility of building a better system. + +## When should we use the Design Patterns? +We must use the design patterns **during the analysis and requirement phase of SDLC (Software Development Life Cycle)**. + +Design patterns ease the analysis and requirement phase of SDLC by providing information based on prior hands-on experiences. + +## Categorization of Design Patterns +Basically, design patterns are categorized into two parts: + +1. Core Java (or JSE) Design Patterns. +2. JEE Design Patterns. + +## Core Java Design Patterns +In core java, there are mainly three types of design patterns, which are further divided into their sub-parts: + +**1. Creational Design Pattern** + + 1. Factory Pattern + 2. Abstract Factory Pattern + 3. Singleton Pattern + 4. Prototype Pattern + 5. Builder Pattern + +**2. Structural Design Pattern** + + 1. Adapter Pattern + 2. Bridge Pattern + 3. Composite Pattern + 4. Decorator Pattern + 5. Facade Pattern + 6. Flyweight Pattern + 7. Proxy Pattern + +**3. Behavioral Design Pattern** + + 1. Chain Of Responsibility Pattern + 2. Command Pattern + 3. Interpreter Pattern + 4. Iterator Pattern + 5. Mediator Pattern + 6. Memento Pattern + 7. Observer Pattern + 8. State Pattern + 9. Strategy Pattern + 10. Template Pattern + 11. Visitor Pattern