Skip to content

This repository serves as a comprehensive guide to Low-Level Design (LLD), aimed at helping developers understand and implement essential design concepts in software development.

Notifications You must be signed in to change notification settings

divyadhimaan/low-level-design

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Low-Level Design: Concepts, Code Examples, and Design Examples

This repository serves as a comprehensive guide to Low-Level Design (LLD), aimed at helping developers understand and implement essential design concepts in software development. It contains a collection of:

  • Core Concepts: Key principles and techniques in LLD such as SOLID principles, object-oriented design, and common design patterns.

  • Code Examples: Practical Java code implementations showcasing various design techniques, including dependency injection, design pattern usage, and object modeling.

  • Design Examples: Step-by-step breakdowns of real-world design problems, with detailed explanations of how to design and architect scalable, maintainable software systems.

  • Whether you're preparing for interviews, aiming to improve your design skills, or looking to see best practices in action, this repository provides a solid foundation for mastering Low-Level Design.

Concepts

SOLID Principles

SOLID is an acronym for five fundamental principles of object-oriented programming and design that help create more maintainable, flexible, and robust software.

Design Patterns

  • Design patterns are reusable solutions to commonly occurring problems in software design.
  • They represent best practices and proven approaches that experienced developers have identified and documented over time.
  • Categories of design patterns include Creational, Structural, and Behavioral patterns.
    • Creational Patterns: Deal with object creation mechanisms (Singleton, Factory, Builder)
    • Structural Patterns: Deal with object composition and relationships (Adapter, Decorator, Facade)
    • Behavioral Patterns: Deal with communication between objects and assignment of responsibilities (Observer, strategy.Strategy, Command)
Creational Patterns Structural Patterns Behavioral Patterns
Singleton Adapter Chain of Responsibility
Factory Method Bridge Command
Abstract Factory Composite Iterator
Builder Decorator Mediator
Prototype Facade Memento
Flyweight Observer
Proxy State
Strategy
Template Method
Visitor
Null Object

Common Confusing Patterns

Design Examples

Easy Problems

Medium Problems

Hard Problems

Notations

  • Is-A (Inheritance)
  • Has-A (Composition/Aggregation)
Syntax Symbol Meaning Usage Line Style
`< --` Solid Class inheritance Concrete or abstract classes Solid line
`< ..` Dotted Interface implementation Class implements interface Dotted line

Relationships

UML Relations

Terminology

  • DAO (Data Access Object): A design pattern that provides an abstract interface to a database or other persistence mechanism.

Resources

NOTE: This repository was created during my learning journey in Low-Level Design. If you notice any improvements or corrections, feel free to reach out.

About

This repository serves as a comprehensive guide to Low-Level Design (LLD), aimed at helping developers understand and implement essential design concepts in software development.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages