# nyanmyr/nyanmyr-s-design-patterns architecture

> Architecture diagram of the GitHub repository nyanmyr/nyanmyr-s-design-patterns, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/nyanmyr/nyanmyr-s-design-patterns
- Repository: https://github.com/nyanmyr/nyanmyr-s-design-patterns

## Overview

This repository is a Java reference collection of GoF design-pattern snippets, not one integrated application. The learner’s workflow is to select and review an individual pattern example; each pattern is a separate module, with no shared runtime pipeline. The README documents creational, structural, and behavioral examples, including some whose source was not sampled. Sampled code confirms internal interactions for Facade, Observer, Chain of Responsibility, Command, Proxy, Composite, Interpreter, and Flyweight; unsampled examples are represented by their exact tree paths without inferred wiring.

Main entry points: [`abstract_factory/AbstractFactory.java`](https://github.com/nyanmyr/nyanmyr-s-design-patterns/blob/main/abstract_factory/AbstractFactory.java) (Abstract Factory), [`builder/Builder.java`](https://github.com/nyanmyr/nyanmyr-s-design-patterns/blob/main/builder/Builder.java) (Builder), [`factory/Factory.java`](https://github.com/nyanmyr/nyanmyr-s-design-patterns/blob/main/factory/Factory.java) (Factory), [`prototype/Prototype.java`](https://github.com/nyanmyr/nyanmyr-s-design-patterns/blob/main/prototype/Prototype.java) (Prototype)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_creational["Creational patterns"]
  node_abstract_factory["Abstract Factory"]
  node_builder["Builder<br/>[Builder.java]"]
  node_factory["Factory<br/>[Factory.java]"]
  node_prototype["Prototype<br/>[Prototype.java]"]
  node_singleton["Singleton<br/>[Singleton.java]"]
end

subgraph group_structural["Structural patterns"]
  node_adapter["Adapter<br/>[Adapter.java]"]
  node_bridge["Bridge<br/>[Bridge.java]"]
  node_composite["Composite<br/>[Composite.java]"]
  node_decorator["Decorator<br/>[Decorator.java]"]
  node_facade["Facade<br/>[Facade.java]"]
  node_flyweight["Flyweight<br/>[Flyweight.java]"]
  node_proxy["Proxy<br/>[Proxy.java]"]
end

subgraph group_behavioral["Behavioral patterns"]
  node_chain["Chain of Responsibility"]
  node_command["Command<br/>[Command.java]"]
  node_interpreter["Interpreter<br/>[Interpreter.java]"]
  node_memento["Memento<br/>[Memento.java]"]
  node_observer["Observer<br/>[Observer.java]"]
  node_state["State<br/>[State.java]"]
  node_strategy["Strategy<br/>[Strategy.java]"]
  node_template["Template Method<br/>[Template.java]"]
  node_visitor["Visitor<br/>[Visitor.java]"]
end

node_learner(("Learner"))

node_learner -->|"reviews"| node_abstract_factory
node_learner -->|"reviews"| node_builder
node_learner -->|"reviews"| node_factory
node_learner -->|"reviews"| node_prototype
node_learner -->|"reviews"| node_singleton
node_learner -->|"reviews"| node_adapter
node_learner -->|"reviews"| node_bridge
node_learner -->|"reviews"| node_composite
node_learner -->|"reviews"| node_decorator
node_learner -->|"reviews"| node_facade
node_learner -->|"reviews"| node_flyweight
node_learner -->|"reviews"| node_proxy
node_learner -->|"reviews"| node_chain
node_learner -->|"reviews"| node_command
node_learner -->|"reviews"| node_interpreter
node_learner -->|"reviews"| node_memento
node_learner -->|"reviews"| node_observer
node_learner -->|"reviews"| node_state
node_learner -->|"reviews"| node_strategy
node_learner -->|"reviews"| node_template
node_learner -->|"reviews"| node_visitor

click node_abstract_factory "https://github.com/nyanmyr/nyanmyr-s-design-patterns/blob/main/abstract_factory/AbstractFactory.java"
click node_builder "https://github.com/nyanmyr/nyanmyr-s-design-patterns/blob/main/builder/Builder.java"
click node_factory "https://github.com/nyanmyr/nyanmyr-s-design-patterns/blob/main/factory/Factory.java"
click node_prototype "https://github.com/nyanmyr/nyanmyr-s-design-patterns/blob/main/prototype/Prototype.java"
click node_singleton "https://github.com/nyanmyr/nyanmyr-s-design-patterns/blob/main/singleton/Singleton.java"
click node_adapter "https://github.com/nyanmyr/nyanmyr-s-design-patterns/blob/main/adapter/Adapter.java"
click node_bridge "https://github.com/nyanmyr/nyanmyr-s-design-patterns/blob/main/bridge/Bridge.java"
click node_composite "https://github.com/nyanmyr/nyanmyr-s-design-patterns/blob/main/composite/Composite.java"
click node_decorator "https://github.com/nyanmyr/nyanmyr-s-design-patterns/blob/main/decorator/Decorator.java"
click node_facade "https://github.com/nyanmyr/nyanmyr-s-design-patterns/blob/main/facade/Facade.java"
click node_flyweight "https://github.com/nyanmyr/nyanmyr-s-design-patterns/blob/main/flyweight/Flyweight.java"
click node_proxy "https://github.com/nyanmyr/nyanmyr-s-design-patterns/blob/main/proxy/Proxy.java"
click node_chain "https://github.com/nyanmyr/nyanmyr-s-design-patterns/blob/main/chain_of_responsibility/ChainOfResponsibility.java"
click node_command "https://github.com/nyanmyr/nyanmyr-s-design-patterns/blob/main/command/Command.java"
click node_interpreter "https://github.com/nyanmyr/nyanmyr-s-design-patterns/blob/main/interpreter/Interpreter.java"
click node_memento "https://github.com/nyanmyr/nyanmyr-s-design-patterns/blob/main/memento/Memento.java"
click node_observer "https://github.com/nyanmyr/nyanmyr-s-design-patterns/blob/main/observer/Observer.java"
click node_state "https://github.com/nyanmyr/nyanmyr-s-design-patterns/blob/main/state/State.java"
click node_strategy "https://github.com/nyanmyr/nyanmyr-s-design-patterns/blob/main/strategy/Strategy.java"
click node_template "https://github.com/nyanmyr/nyanmyr-s-design-patterns/blob/main/template/Template.java"
click node_visitor "https://github.com/nyanmyr/nyanmyr-s-design-patterns/blob/main/visitor/Visitor.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_abstract_factory,node_builder,node_factory,node_prototype,node_singleton toneBlue
class node_adapter,node_bridge,node_composite,node_decorator,node_facade,node_flyweight,node_proxy toneAmber
class node_chain,node_command,node_interpreter,node_memento,node_observer,node_state,node_strategy,node_template,node_visitor toneMint
class node_learner toneIndigo
```

## Components

### Creational patterns

- [Abstract Factory](https://github.com/nyanmyr/nyanmyr-s-design-patterns/blob/main/abstract_factory/AbstractFactory.java): `abstract_factory/AbstractFactory.java`
- [Builder](https://github.com/nyanmyr/nyanmyr-s-design-patterns/blob/main/builder/Builder.java): `builder/Builder.java`
- [Factory](https://github.com/nyanmyr/nyanmyr-s-design-patterns/blob/main/factory/Factory.java): `factory/Factory.java`
- [Prototype](https://github.com/nyanmyr/nyanmyr-s-design-patterns/blob/main/prototype/Prototype.java): `prototype/Prototype.java`
- [Singleton](https://github.com/nyanmyr/nyanmyr-s-design-patterns/blob/main/singleton/Singleton.java): `singleton/Singleton.java`

### Structural patterns

- [Adapter](https://github.com/nyanmyr/nyanmyr-s-design-patterns/blob/main/adapter/Adapter.java): `adapter/Adapter.java`
- [Bridge](https://github.com/nyanmyr/nyanmyr-s-design-patterns/blob/main/bridge/Bridge.java): `bridge/Bridge.java`
- [Composite](https://github.com/nyanmyr/nyanmyr-s-design-patterns/blob/main/composite/Composite.java): `composite/Composite.java`
- [Decorator](https://github.com/nyanmyr/nyanmyr-s-design-patterns/blob/main/decorator/Decorator.java): `decorator/Decorator.java`
- [Facade](https://github.com/nyanmyr/nyanmyr-s-design-patterns/blob/main/facade/Facade.java): `facade/Facade.java`
- [Flyweight](https://github.com/nyanmyr/nyanmyr-s-design-patterns/blob/main/flyweight/Flyweight.java): `flyweight/Flyweight.java`
- [Proxy](https://github.com/nyanmyr/nyanmyr-s-design-patterns/blob/main/proxy/Proxy.java): `proxy/Proxy.java`

### Behavioral patterns

- [Chain of Responsibility](https://github.com/nyanmyr/nyanmyr-s-design-patterns/blob/main/chain_of_responsibility/ChainOfResponsibility.java): `chain_of_responsibility/ChainOfResponsibility.java`
- [Command](https://github.com/nyanmyr/nyanmyr-s-design-patterns/blob/main/command/Command.java): `command/Command.java`
- [Interpreter](https://github.com/nyanmyr/nyanmyr-s-design-patterns/blob/main/interpreter/Interpreter.java): `interpreter/Interpreter.java`
- [Memento](https://github.com/nyanmyr/nyanmyr-s-design-patterns/blob/main/memento/Memento.java): `memento/Memento.java`
- [Observer](https://github.com/nyanmyr/nyanmyr-s-design-patterns/blob/main/observer/Observer.java): `observer/Observer.java`
- [State](https://github.com/nyanmyr/nyanmyr-s-design-patterns/blob/main/state/State.java): `state/State.java`
- [Strategy](https://github.com/nyanmyr/nyanmyr-s-design-patterns/blob/main/strategy/Strategy.java): `strategy/Strategy.java`
- [Template Method](https://github.com/nyanmyr/nyanmyr-s-design-patterns/blob/main/template/Template.java): `template/Template.java`
- [Visitor](https://github.com/nyanmyr/nyanmyr-s-design-patterns/blob/main/visitor/Visitor.java): `visitor/Visitor.java`

### Other components

- **Learner**

## Connections

- Learner → Abstract Factory: reviews
- Learner → Builder: reviews
- Learner → Factory: reviews
- Learner → Prototype: reviews
- Learner → Singleton: reviews
- Learner → Adapter: reviews
- Learner → Bridge: reviews
- Learner → Composite: reviews
- Learner → Decorator: reviews
- Learner → Facade: reviews
- Learner → Flyweight: reviews
- Learner → Proxy: reviews
- Learner → Chain of Responsibility: reviews
- Learner → Command: reviews
- Learner → Interpreter: reviews
- Learner → Memento: reviews
- Learner → Observer: reviews
- Learner → State: reviews
- Learner → Strategy: reviews
- Learner → Template Method: reviews
- Learner → Visitor: reviews
