In software engineering, a design pattern is a general repeatable solution to a commonly occurring problem in software design. A design pattern isn't a finished design that can be transformed directly into code. It is a description or template for how to solve a problem that can be used in many different situations.
- Creational design patterns - these patterns are all about creating objects. Io other words this design patterns are used for instantiation of objects.
- Structural design patterns - these design patterns for composition of objects and classes. With Structural design patterns use inheritnace to compose interfaces.
- Behavioral design patterns - these patterns all about communication of objects of classes. BDPs conserned mostly about communication of objects of spesific classes.
| Creational Patterns | Structural Patterns | Behavioral Patterns | Other Useful Patterns |
|---|---|---|---|
| β Abstract Factory | β Adapter | Chain of responsibility | β Combinator |
| β Builder | Bridge | β Command | |
| β Factory Method | β Composite | β Iterator | |
| Object Pool | β Decorator | β Mediator | |
| β Prototype | β Facade | β Memento | |
| β Singleton | flyweight | Null Object | |
| Private Class Data | β Observer | ||
| β Proxy | β State | ||
| β Strategy | |||
| β Template Method | |||
| Visitor |
Projects practice:
- β Car Rental
- β Parking lot
- β Online food delivery
- β Stack Overflow
- β Vending Machine
- β Task Management System
- β Movie Booking System
- β Pub-Sub System
- β Splitwise
- β Facebook - Social Networking App
Games:
Multi-Threading and Concurrency
- β ReentrantLock
- β ReadWriteLock
- β StampedLock
- β SemaphoreLock
- β Producer-Consumer problem using synchronized
- β Producer-Consumer problem using Lock
- β ThreadPoolExecutor + Future + CompletableFuture + Executors
Stream API examples:
*Source: amigoscode.com
Here you may find related documentations and video lessons which would be useful for you to gain new knowledge.
- Design Patterns (Christopher Okhravi)
- YT - Concept & Coding (Shyaransh Jain)
- Java Design Patterns and Architecture (Udemy free course)
| No | Name | Resource | Page | Status |
|---|---|---|---|---|
| 1. | Head First Design Patterns | Head First Design Patterns | 677 | β |
| 2. | Elements of Reusable Object-Oriented Software | Elements of Reusable Object-Oriented Software | 417 | π |
| 3. | Dive into Design Patterns | Dive into Design Patterns | 410 | π |
| 4. | Head First Object-Oriented Analysis and Design | Head First Object-Oriented Analysis and Design | 603 | β |
| 5. | Patterns of Enterprise Application Architecture | Patterns of Enterprise Application Architecture | 389 | β |