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 | ⌛ |