Java Design Pattern

Detects GoF patterns in Java code or recommends the right pattern for a problem. Use when user asks to "what pattern is this", "detect design patterns", "suggest a pattern", "should I use factory", "which design pattern", or "recommend a pattern for".

Either detect which design patterns are used in the provided code, or recommend the right pattern for a described problem. Tailor all examples to the detected Java version (Java 8+).

Mode A — Detect patterns in existing code

Scan the code for these common patterns and name them explicitly:

Creational:

  • Singleton — private constructor + static instance (flag if not thread-safe without volatile or enum)
  • Factory Method — static create() or of() returning an interface type
  • Builder — inner static Builder class with fluent setters and build()
  • Abstract Factory — factory that creates families of related objects

Structural:

  • Decorator — wraps another object implementing the same interface to add behaviour
  • Proxy — Spring @Transactional, @Cacheable, @Async are all proxies; flag manual proxies
  • Adapter — converts one interface to another (often with *Adapter or *Wrapper class name)
  • Facade — simplifies a complex subsystem; often a service that orchestrates multiple repos/clients
  • Composite — tree structure where leaf and composite implement the same interface

Behavioral:

  • Strategy — interface with multiple implementations selected at runtime
  • Observer — Spring ApplicationEvent / @EventListener or manual listener list
  • Template Method — abstract class with final algorithm method calling overridable steps
  • Command — encapsulates a request as an object (common in undo/redo, queuing)
  • Chain of Responsibility — Spring Security filter chain, Servlet filters
  • State — object behaviour changes based on internal state enum/object

For each detected pattern: name it, show the key code that reveals it, explain how it's used here.

Mode B — Recommend a pattern for a problem

When the user describes a problem, recommend the most appropriate pattern:

ProblemRecommended Pattern
Need multiple algorithms interchangeable at runtimeStrategy
Object creation is complex, many optional fieldsBuilder
Need to add behaviour without modifying existing classDecorator
Need to notify multiple objects when state changesObserver
Complex subsystem needs a simple interfaceFacade
Same operation on tree structuresComposite
Object has distinct lifecycle statesState
Need only one instance globallySingleton (or Spring @Component)

Show a minimal Java implementation for the recommended pattern, appropriate for the detected Java version:

  • Java 8+: use functional interfaces (Strategy can be a lambda Function<T,R>)
  • Java 17+: use sealed classes for State pattern
  • Java 16+: use records for value objects in patterns

Output format

Mode A: List each detected pattern with: name + location + explanation + any concerns (e.g., non-thread-safe Singleton) Mode B: Recommend pattern + minimal before/after code + when to use vs alternatives

Next Steps

  • After identifying patterns → run /java-solid to check if patterns are applied correctly
  • For implementation help → ask the java-architect agent for full design guidance