Low-Level Design (LLD) — Object Design, UML and Classic Problems in C#
LLD steps
Requirements → use cases → nouns/verbs → relationships → class diagram → SOLID + patterns → code core flow → concurrency, edge cases, tests, tables.
Pattern picker
Varying rule → Strategy · lifecycle states → State · object creation → Factory/Builder · notify many → Observer · add features → Decorator · pass along handlers → Chain of Responsibility · undo/queue requests → Command · simple front door → Facade · one instance → DI singleton.
UML quick key
+ public - private # protected · ▷ inheritance · ┈▷ interface · ◆ composition · ◇ aggregation · multiplicities 1, 0..1, , 1...
Classic problems
Parking lot · library · elevator · vending machine · ATM (chain of note dispensers) · LRU cache · rate limiter · Splitwise · movie booking (seat locks) · snake & ladder · chess · hotel booking · food delivery.
Concurrency in LLD
Lock critical sections · atomic ops (Interlocked, ConcurrentDictionary.TryAdd) · optimistic concurrency (row version) · unique constraints · distributed locks with TTL · idempotent operations.