This repository contains
- Low-level design implementations for various applications,
- Design Patterns,
- Design Principles.
- Questions asked in Interviews.
Each case represents a specific system or problem domain.
Learn how to design and implement large-scale systems. Prep for the system design interview.
Status
- ⏳ Undergoing
- ✅ Implemented
- ❌ Still to do
- Library Management System ❌ Still to do
- Chess Implementation ❌ Still to do
- Food Delivery ✅ Implemented
- Parking Lot ❌ Still to do
- Json Parser ⏳ Undergoing
- Stock Trading ❌ Still to do
- Design Logger ❌ Still to do
- Elevator Design ❌ Still to do
- In-Memory Sql ❌ Still to do
- Ecommerce-Design ❌ Still to do
This repository contains implementations of various design patterns. Each design pattern is categorized by type and labeled with its implementation status.
- Abstract Factory: ✅ Implemented
- Builder: ✅ Implemented
- Factory Method: ✅ Implemented
- Prototype: ✅ Implemented
- Singleton: ✅ Implemented
- Adapter: ✅ Implemented
- Bridge: ✅ Implemented
- Composite: ✅ Implemented
- Decorator: ✅ Implemented
- Facade: ✅ Implemented
- Flyweight: ✅ Implemented
- Proxy: ✅ Implemented
- Chain of Responsibility: ✅ Implemented
- Command: ✅ Implemented
- Interpreter: ✅ Implemented
- Iterator: ✅ Implemented
- Mediator: ✅ Implemented
- Memento: ✅ Implemented
- Observer: ✅ Implemented
- State: ✅ Implemented
- Strategy: ✅ Implemented
- Template Method: ✅ Implemented
- Visitor: ✅ Implemented
This repository provides an overview of important design principles that every engineer should know. Understanding and applying these design principles can significantly contribute to creating high-quality, maintainable, and scalable software systems.
- Single Responsibility Principle (SRP)
- Open-Closed Principle (OCP)
- Liskov Substitution Principle (LSP)
- Interface Segregation Principle (ISP)
- Dependency Inversion Principle (DIP)
- DRY (Don't Repeat Yourself) Principle
- KISS (Keep It Simple, Stupid) Principle
- YAGNI (You Ain't Gonna Need It) Principle
- Composition Over Inheritance Principle
- Law of Demeter (LoD) or Principle of Least Knowledge
- Separation of Concerns (SoC)
- High Cohesion and Low Coupling
- GRASP (General Responsibility Assignment Software Patterns)
- Design by Contract (DbC)
- Dependency Injection (DI) and Inversion of Control (IoC)
- Test-Driven Development (TDD)
Please refer to each principle for a detailed explanation and guidelines on their application.
Contributions to improve the project is appreciated and I encourage you to follow these guidelines:
- Fork the repository and clone it to your local machine.
- Create a new branch for your feature or bug fix:
git checkout -b feature/your-feature
orgit checkout -b bugfix/your-bug-fix
. - Make your changes, including appropriate tests if applicable.
- Ensure that your code adheres to the project's coding standards.
- Commit your changes and push to your forked repository.
- Submit a pull request to the main repository, explaining your changes in detail and referencing any related issues.
- Be responsive to any feedback or questions during the review process.
By contributing to this project, you agree to abide by the [Code of Conduct]. Please ensure that you follow the guidelines above and maintain a respectful and inclusive environment for everyone.
If you have any questions, suggestions, or feedback, please feel free to reach out to me. You can contact me via:
- Email: [email protected]
- Likedin: @ashish1500616
- GitHub Issues: Repository Issues
I appreciate your interest in this project and welcome any contributions or feedback you may have.