LowLevelDesign icon indicating copy to clipboard operation
LowLevelDesign copied to clipboard

This repository provides comprehensive coverage of all major object-oriented design patterns with practical, real-world Java examples. In addition, it features detailed low-level design implementation...

🚀 System Design and Design Patterns

Welcome to the System Design and Design Patterns repository! This repository contains a collection of system design solutions and implementation of various design patterns in Java. It serves as a comprehensive reference for developers looking to learn or refresh their understanding of key design concepts.


📌 Table of Contents

1. Core Concepts and Principles

  • A_SOLIDPrinciples

  • B_DesignPatterns

  • 🌐 Design Patterns Folder

This folder contains comprehensive implementations of various design patterns.

🛠️ Design Patterns Implemented (AA-Z):

  • AA_SingletonDesignPattern: Multiple ways to implement Singleton.
  • A_StrategyDesignPattern: Parking spot allocation strategies.
  • B_ObserverDesignPattern: Parking spot availability observer.
  • C_FactoryDesignPattern: Object creation logic based on type.
  • D_AbstractFactoryDesignPattern: Abstract factory for creating families of related objects.
  • E_ChainResponsibilityDesignPattern: Chain of responsibility for processing requests.
  • F_ProxyDesignPattern: Proxy for controlling access to an object.
  • G_NullObjectDesignPattern: Default behavior when no object is available.
  • H_StateDesignPattern: Changing behavior based on state.
  • I_CompositeDesignPattern: Treating individual objects and compositions uniformly.
  • J_AdapterDesignPattern: Adapter to bridge incompatible interfaces.
  • K_BuilderDesignPattern: Construct complex objects step by step.
  • L_FacadeDesignPattern: Simplifying complex subsystems.
  • M_BridgeDesignPattern: Decoupling abstraction from implementation.
  • N_FlyweightDesignPattern: Reusing objects efficiently.

2. System Design Implementations

  • C_ParkingLotDesign - Parking lot management system.
  • CA_ProducerConsumerDesign - Basic producer consumer design implemented through multithreading.
  • D_TicTacToeLLD - Low-level design of the Tic Tac Toe game.
  • E_CarRentalSystem - Design of a car rental management system.
  • F_SnakeAndLadder - Low-level design of the Snake and Ladder game.
  • G_BookMyShow - BookMyShow ticket booking system.
  • H_VendingMachineDesign - Vending machine design.
  • I_ATMDesign - Low-level ATM machine design.
  • J_FileSystemDesign - File system design with command operations.
  • K_SimpleArithmeticCalculator - Calculator design with basic arithmetic operations.
  • LoggerDesign - Logger with the Facade pattern.
  • M_UberDesign - Online cab booking system (Uber/Rapido/Ola).
  • N_ZeptoStoreDesign - Zepto store with ordering strategies.
  • O_CultFitDesign - CultFit fitness management system.
  • P_TwitterDesign - Twitter-like social media platform.
  • Q_SwiggyDesign - Swiggy food delivery system with coupon discounts.
  • R_IssueResolvingSystem - Issue resolving system to create issue's, letting available agents to pick tickets and tracking issue's
  • S_TextEditorDesign - Any text document has characters arranged in rows and columns. Also each character can have its own style parameters like font name, font size, bold, italic etc.
  • T_MeetingScheduler - Implemented a similar microsoft teams scheduler logic.
  • U_FlightBookingManagement - LLD of flight booking management
  • V_HotelManagementSystem - LLD of hotel management system
  • Y_Utils - Utility methods for design implementations.
  • Z_Exception - Exception handling utilities.

💻 Usage Instructions

  • Clone the repository and explore each module for detailed examples.
  • Each module has a dedicated README with implementation details and usage.

🚀 How to Run

  1. Clone this repository:
    git clone https://github.com/AvinashDogiparthi/LowLevelDesign.git
    
    

🤝 Contributing

Contributions are welcome! Please open issues for improvements or submit pull requests.


Support

If you find this repository helpful, please give it a star! Your support encourages more comprehensive guides.


📧 Contact

For any queries or feedback, feel free to reach out via GitHub.