Bird
Raised Fist0
LLDsystem_design~5 mins

When to use which structural pattern in LLD - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the main purpose of the Adapter pattern?
The Adapter pattern helps two incompatible interfaces work together by converting one interface into another expected by the client.
Click to reveal answer
beginner
When should you use the Composite pattern?
Use the Composite pattern when you want to treat individual objects and compositions of objects uniformly, like a tree structure of parts and wholes.
Click to reveal answer
intermediate
What problem does the Proxy pattern solve?
The Proxy pattern controls access to an object, adding a placeholder that can add security, lazy loading, or logging before forwarding requests.
Click to reveal answer
intermediate
When is the Decorator pattern useful?
Use the Decorator pattern to add responsibilities to objects dynamically without changing their class, like adding features to a window or text.
Click to reveal answer
beginner
Why choose the Facade pattern?
The Facade pattern provides a simple interface to a complex subsystem, making it easier for clients to use without knowing all details.
Click to reveal answer
Which structural pattern would you use to allow incompatible interfaces to work together?
AFacade
BComposite
CDecorator
DAdapter
If you want to add features to an object dynamically without changing its class, which pattern fits best?
ADecorator
BProxy
CComposite
DAdapter
Which pattern provides a simple interface to a complex system?
ADecorator
BFacade
CComposite
DProxy
To treat individual objects and groups of objects the same way, which pattern is appropriate?
AComposite
BProxy
CAdapter
DFacade
Which pattern controls access to an object, possibly adding security or lazy loading?
AFacade
BDecorator
CProxy
DAdapter
Explain when and why you would use the Adapter, Decorator, and Facade patterns in a system design.
Think about how each pattern changes or hides complexity.
You got /3 concepts.
    Describe the differences between Composite and Proxy patterns and give real-life examples for each.
    Focus on structure vs access control.
    You got /3 concepts.

      Practice

      (1/5)
      1. Which structural pattern is best suited for representing part-whole hierarchies like folders and files in a system?
      easy
      A. Facade pattern
      B. Composite pattern
      C. Proxy pattern
      D. Decorator pattern

      Solution

      1. Step 1: Understand the problem context

        Part-whole hierarchies like folders and files form tree structures where each node can be a composite or a leaf.
      2. Step 2: Match the pattern to the structure

        The Composite pattern is designed to treat individual objects and compositions uniformly, perfect for tree-like structures.
      3. Final Answer:

        Composite pattern -> Option B
      4. Quick Check:

        Tree structures = Composite pattern [OK]
      Hint: Tree or hierarchy? Use Composite pattern [OK]
      Common Mistakes:
      • Confusing Decorator with Composite
      • Using Proxy for hierarchy management
      • Choosing Facade for internal structure
      2. Which pattern should you use if you want to add responsibilities to objects dynamically without changing their class?
      easy
      A. Proxy pattern
      B. Facade pattern
      C. Composite pattern
      D. Decorator pattern

      Solution

      1. Step 1: Identify the need to add features dynamically

        When you want to add new behavior to objects at runtime without altering their class, you need a flexible pattern.
      2. Step 2: Select the pattern that wraps objects

        The Decorator pattern wraps objects to add responsibilities dynamically, without changing the original class.
      3. Final Answer:

        Decorator pattern -> Option D
      4. Quick Check:

        Add features dynamically = Decorator [OK]
      Hint: Add features on the fly? Use Decorator [OK]
      Common Mistakes:
      • Choosing Proxy instead of Decorator
      • Using Facade to add features
      • Confusing Composite with Decorator
      3. Consider a system where you want to control access to a resource and add lazy loading. Which structural pattern fits best?
      class ResourceProxy {
        constructor() {
          this.resource = null;
        }
        access() {
          if (!this.resource) {
            this.resource = new RealResource();
          }
          return this.resource;
        }
      }
      medium
      A. Proxy pattern
      B. Decorator pattern
      C. Composite pattern
      D. Facade pattern

      Solution

      1. Step 1: Analyze the code behavior

        The code delays creating the real resource until it is accessed, controlling access and adding lazy loading.
      2. Step 2: Identify the matching pattern

        This behavior matches the Proxy pattern, which controls access to another object and can add lazy initialization.
      3. Final Answer:

        Proxy pattern -> Option A
      4. Quick Check:

        Control access + lazy load = Proxy [OK]
      Hint: Control access or lazy load? Use Proxy [OK]
      Common Mistakes:
      • Confusing Proxy with Decorator
      • Using Facade for access control
      • Choosing Composite for resource control
      4. You have a complex subsystem with many classes. You want to provide a simple interface to clients. Which pattern should you use? A developer wrote this code but clients still see complex calls:
      class ComplexSystem {
        operationA() {}
        operationB() {}
        operationC() {}
      }
      
      class SimpleInterface {
        constructor() {
          this.system = new ComplexSystem();
        }
        simpleOperation() {
          this.system.operationA();
          this.system.operationB();
          this.system.operationC();
        }
      }
      What is the likely mistake?
      medium
      A. They did not hide the ComplexSystem instance properly
      B. They used Proxy instead of Facade
      C. They used Composite instead of Facade
      D. They forgot to add Decorator to SimpleInterface

      Solution

      1. Step 1: Understand Facade pattern purpose

        Facade provides a simple interface hiding complex subsystem details from clients.
      2. Step 2: Identify the mistake in code usage

        If clients still see complex calls, likely the ComplexSystem instance is exposed or clients bypass the Facade.
      3. Final Answer:

        They did not hide the ComplexSystem instance properly -> Option A
      4. Quick Check:

        Facade hides complexity = hide subsystem [OK]
      Hint: Facade hides complexity; don't expose subsystem [OK]
      Common Mistakes:
      • Confusing Proxy with Facade
      • Exposing subsystem objects to clients
      • Using Decorator to simplify interface
      5. You are designing a graphic editor. You want to represent shapes that can be simple (circle, square) or groups of shapes. You also want to add features like border color dynamically and control access to some shapes. Which combination of structural patterns should you use?
      hard
      A. Facade for groups, Proxy for features, Composite for access control
      B. Decorator for groups, Composite for features, Facade for access control
      C. Composite for groups, Decorator for features, Proxy for access control
      D. Proxy for groups, Facade for features, Decorator for access control

      Solution

      1. Step 1: Match patterns to requirements

        Groups of shapes form tree structures best handled by Composite. Adding features dynamically fits Decorator. Controlling access fits Proxy.
      2. Step 2: Combine patterns correctly

        Use Composite for shape groups, Decorator to add border color dynamically, and Proxy to control access to shapes.
      3. Final Answer:

        Composite for groups, Decorator for features, Proxy for access control -> Option C
      4. Quick Check:

        Groups=Composite, Features=Decorator, Access=Proxy [OK]
      Hint: Groups=Composite, Features=Decorator, Access=Proxy [OK]
      Common Mistakes:
      • Mixing Facade with group representation
      • Using Proxy for adding features
      • Confusing Decorator with access control
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard