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: ❌ Still to do
- Builder: ❌ Still to do
- Factory Method: ❌ Still to do
- Prototype: ❌ Still to do
- Singleton: ❌ Still to do
- Adapter: ❌ Still to do
- Bridge: ❌ Still to do
- Composite: ❌ Still to do
- Decorator: ❌ Still to do
- Facade: ❌ Still to do
- Flyweight: ❌ Still to do
- Proxy: ❌ Still to do
- Chain of Responsibility: ❌ Still to do
- Command: ❌ Still to do
- Interpreter: ❌ Still to do
- Iterator: ❌ Still to do
- Mediator: ❌ Still to do
- Memento: ❌ Still to do
- Observer: ❌ Still to do
- State: ❌ Still to do
- Strategy: ❌ Still to do
- Template Method: ❌ Still to do
- Visitor: ❌ Still to do
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: ashish1500616@gmail.com
- Likedin: @ashish1500616
- GitHub Issues: Repository Issues
I appreciate your interest in this project and welcome any contributions or feedback you may have.