Skip to content

ayushnandi/Low-Level-Design

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Low-Level Design (LLD) in Java

Welcome to the Low-Level Design (LLD) repository! 🎯
This repository is a hands-on collection of Java-based implementations where I’ve broken down core LLD concepts and design patterns, supported with real-world examples and visual diagrams for better understanding.

🚀 Introduction

The goal of this repository is to help developers (including my future self) understand and apply key Low-Level Design principles effectively in software development. Each package focuses on a specific concept or design pattern, explained through practical code examples and structured flow diagrams.

If you're looking to level up your system design skills by diving deep into how objects and components interact in scalable software — this repo is for you.

{D4094114-F030-4B0C-99DF-2930BC6EE687}

🧠 Concepts Covered

This repo touches on a variety of LLD topics, including but not limited to:

  • SOLID Principles: Improve software maintainability and extensibility.
  • Design Patterns: Solve recurring software design problems in a proven way.

🏗️ Design Patterns & Principles Implemented

🔹 SOLID Principles

Each principle is demonstrated with examples to show how it helps in writing clean and modular code:

  • Single Responsibility Principle (SRP)
  • Open/Closed Principle (OCP)
  • Liskov Substitution Principle (LSP)
  • Interface Segregation Principle (ISP)
  • Dependency Inversion Principle (DIP)

🔹 Abstract Factory Design Pattern

  • Example: Creating families of related objects (e.g., different car models) without specifying their concrete classes.

🔹 Decorator Design Pattern

  • Example: Adding toppings to a base pizza dynamically — promoting code flexibility and reuse.

🔹 Factory Design Pattern

  • Example: Car factory that returns either a Luxury or Average car, abstracting object creation logic from the client.

🔹 Observer Design Pattern

  • Example: Weather update notification system where multiple observers subscribe and get updates — demonstrating loose coupling.

🔹 Strategy Design Pattern

  • Example: A Tic-Tac-Toe game that uses interchangeable algorithms for deciding moves.

📌 How to Use

  1. Clone the repository:
    git clone https://github.com/your-username/low-level-design-java.git

About

Fundamentals of Lower Level Design

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published