# marcoaparaujo/padroes-projeto architecture

> Architecture diagram of the GitHub repository marcoaparaujo/padroes-projeto, 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/marcoaparaujo/padroes-projeto
- Repository: https://github.com/marcoaparaujo/padroes-projeto

## Overview

This repository is a Java collection of GoF design-pattern examples modeled around academic entities, not a single integrated application. Its principal use is to examine how each pattern expresses a focused behavior—such as interpreting arithmetic, routing document signatures, changing student state, or adapting grades. The graph groups the examples by behavioral, creational, and structural patterns. The README is empty, and sampled source covers only some examples; other listed pattern branches are included from the tree without asserting unverified wiring.

Main entry points: [`src/main/java/padroescomportamentais/chainofresponsability/Funcionario.java`](https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroescomportamentais/chainofresponsability/Funcionario.java) (Signature chain), [`src/main/java/padroescomportamentais/interpreter/InterpretadorExpressoesAritmeticas.java`](https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroescomportamentais/interpreter/InterpretadorExpressoesAritmeticas.java) (Arithmetic interpreter), [`src/main/java/padroescomportamentais/state/Aluno.java`](https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroescomportamentais/state/Aluno.java) (Student lifecycle), [`src/main/java/padroescomportamentais/strategy/Aluno.java`](https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroescomportamentais/strategy/Aluno.java) (Grade operations)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_behavioral["Behavioral patterns"]
  node_chain["Signature chain<br/>[Funcionario.java]"]
  node_command["Semester commands<br/>[Tarefa.java]"]
  node_interpreter["Arithmetic interpreter"]
  node_expression["Expression types"]
  node_iterator["Census iterator<br/>[Censo.java]"]
  node_mediator["Ombuds mediator<br/>[Ouvidoria.java]"]
  node_memento["Student snapshots<br/>[Aluno.java]"]
  node_observer["Class notifications<br/>[Turma.java]"]
  node_state["Student lifecycle<br/>[Aluno.java]"]
  node_state_types["Lifecycle states<br/>[AlunoEstado.java]"]
  node_strategy["Grade operations<br/>[Aluno.java]"]
  node_calculator["Calculator context<br/>[Calculadora.java]"]
  node_template["Approval rules<br/>[Aluno.java]"]
  node_visitor["Person visitor<br/>[PessoaVisitor.java]"]
  node_visitor_types["Visitor elements<br/>[Pessoa.java]"]
end

subgraph group_creational["Creational patterns"]
  node_abstract_factory["Academic factories"]
  node_builder["Student builder<br/>[AlunoBuilder.java]"]
  node_factory_method["Student services"]
  node_prototype["Student prototype<br/>[Aluno.java]"]
  node_address["Address clone<br/>[Endereco.java]"]
  node_singleton["Shared parameters<br/>[Parametros.java]"]
end

subgraph group_structural["Structural patterns"]
  node_adapter["Grade adapter"]
  node_grade_concept["Concept grades"]
  node_bridge["Role qualifications<br/>[Cargo.java]"]
  node_composite["Course contents<br/>[Conteudo.java]"]
  node_decorator["Course additions"]
  node_facade["Student services facade<br/>[AlunoFacade.java]"]
  node_flyweight["Shared cities<br/>[CidadeFactory.java]"]
  node_proxy["Student data proxy<br/>[Aluno.java]"]
  node_student_db[("Student data source<br/>[BD.java]")]
end

node_chain -->|"forwards signature"| node_chain
node_interpreter -->|"evaluates expression"| node_expression
node_state -->|"delegates transition"| node_state_types
node_strategy -->|"creates and calls"| node_calculator
node_visitor -->|"dispatches display"| node_visitor_types
node_prototype -->|"clones address"| node_address
node_adapter -->|"sets and reads"| node_grade_concept
node_proxy -->|"loads student"| node_student_db

click node_chain "https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroescomportamentais/chainofresponsability/Funcionario.java"
click node_command "https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroescomportamentais/command/Tarefa.java"
click node_interpreter "https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroescomportamentais/interpreter/InterpretadorExpressoesAritmeticas.java"
click node_expression "https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroescomportamentais/interpreter/InterpretadorExpressao.java"
click node_iterator "https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroescomportamentais/iterator/Censo.java"
click node_mediator "https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroescomportamentais/mediator/Ouvidoria.java"
click node_memento "https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroescomportamentais/memento/Aluno.java"
click node_observer "https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroescomportamentais/observer/Turma.java"
click node_state "https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroescomportamentais/state/Aluno.java"
click node_state_types "https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroescomportamentais/state/AlunoEstado.java"
click node_strategy "https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroescomportamentais/strategy/Aluno.java"
click node_calculator "https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroescomportamentais/strategy/Calculadora.java"
click node_template "https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroescomportamentais/templatemethod/Aluno.java"
click node_visitor "https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroescomportamentais/visitor/PessoaVisitor.java"
click node_visitor_types "https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroescomportamentais/visitor/Pessoa.java"
click node_abstract_factory "https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroescriacao/abstractfactory/FabricaAbstrata.java"
click node_builder "https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroescriacao/builder/AlunoBuilder.java"
click node_factory_method "https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroescriacao/factorymethod/ServicoFactory.java"
click node_prototype "https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroescriacao/prototype/Aluno.java"
click node_address "https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroescriacao/prototype/Endereco.java"
click node_singleton "https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroescriacao/singleton/Parametros.java"
click node_adapter "https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroesestruturais/adapter/AvaliacaoAdapter.java"
click node_grade_concept "https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroesestruturais/adapter/AvaliacaoConceito.java"
click node_bridge "https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroesestruturais/bridge/Cargo.java"
click node_composite "https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroesestruturais/composite/Conteudo.java"
click node_decorator "https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroesestruturais/decorator/CursoDecorator.java"
click node_facade "https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroesestruturais/facade/AlunoFacade.java"
click node_flyweight "https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroesestruturais/flyweight/CidadeFactory.java"
click node_proxy "https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroesestruturais/proxy/Aluno.java"
click node_student_db "https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroesestruturais/proxy/BD.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_chain,node_command,node_interpreter,node_expression,node_iterator,node_mediator,node_memento,node_observer,node_state,node_state_types,node_strategy,node_calculator,node_template,node_visitor,node_visitor_types toneBlue
class node_abstract_factory,node_builder,node_factory_method,node_prototype,node_address,node_singleton toneAmber
class node_adapter,node_grade_concept,node_bridge,node_composite,node_decorator,node_facade,node_flyweight,node_proxy,node_student_db toneMint
```

## Components

### Behavioral patterns

- [Signature chain](https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroescomportamentais/chainofresponsability/Funcionario.java): `src/main/java/padroescomportamentais/chainofresponsability/Funcionario.java`
- [Semester commands](https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroescomportamentais/command/Tarefa.java): `src/main/java/padroescomportamentais/command/Tarefa.java`
- [Arithmetic interpreter](https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroescomportamentais/interpreter/InterpretadorExpressoesAritmeticas.java): `src/main/java/padroescomportamentais/interpreter/InterpretadorExpressoesAritmeticas.java`
- [Expression types](https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroescomportamentais/interpreter/InterpretadorExpressao.java): `src/main/java/padroescomportamentais/interpreter/InterpretadorExpressao.java`
- [Census iterator](https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroescomportamentais/iterator/Censo.java): `src/main/java/padroescomportamentais/iterator/Censo.java`
- [Ombuds mediator](https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroescomportamentais/mediator/Ouvidoria.java): `src/main/java/padroescomportamentais/mediator/Ouvidoria.java`
- [Student snapshots](https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroescomportamentais/memento/Aluno.java): `src/main/java/padroescomportamentais/memento/Aluno.java`
- [Class notifications](https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroescomportamentais/observer/Turma.java): `src/main/java/padroescomportamentais/observer/Turma.java`
- [Student lifecycle](https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroescomportamentais/state/Aluno.java): `src/main/java/padroescomportamentais/state/Aluno.java`
- [Lifecycle states](https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroescomportamentais/state/AlunoEstado.java): `src/main/java/padroescomportamentais/state/AlunoEstado.java`
- [Grade operations](https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroescomportamentais/strategy/Aluno.java): `src/main/java/padroescomportamentais/strategy/Aluno.java`
- [Calculator context](https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroescomportamentais/strategy/Calculadora.java): `src/main/java/padroescomportamentais/strategy/Calculadora.java`
- [Approval rules](https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroescomportamentais/templatemethod/Aluno.java): `src/main/java/padroescomportamentais/templatemethod/Aluno.java`
- [Person visitor](https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroescomportamentais/visitor/PessoaVisitor.java): `src/main/java/padroescomportamentais/visitor/PessoaVisitor.java`
- [Visitor elements](https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroescomportamentais/visitor/Pessoa.java): `src/main/java/padroescomportamentais/visitor/Pessoa.java`

### Creational patterns

- [Academic factories](https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroescriacao/abstractfactory/FabricaAbstrata.java): `src/main/java/padroescriacao/abstractfactory/FabricaAbstrata.java`
- [Student builder](https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroescriacao/builder/AlunoBuilder.java): `src/main/java/padroescriacao/builder/AlunoBuilder.java`
- [Student services](https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroescriacao/factorymethod/ServicoFactory.java): `src/main/java/padroescriacao/factorymethod/ServicoFactory.java`
- [Student prototype](https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroescriacao/prototype/Aluno.java): `src/main/java/padroescriacao/prototype/Aluno.java`
- [Address clone](https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroescriacao/prototype/Endereco.java): `src/main/java/padroescriacao/prototype/Endereco.java`
- [Shared parameters](https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroescriacao/singleton/Parametros.java): `src/main/java/padroescriacao/singleton/Parametros.java`

### Structural patterns

- [Grade adapter](https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroesestruturais/adapter/AvaliacaoAdapter.java): `src/main/java/padroesestruturais/adapter/AvaliacaoAdapter.java`
- [Concept grades](https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroesestruturais/adapter/AvaliacaoConceito.java): `src/main/java/padroesestruturais/adapter/AvaliacaoConceito.java`
- [Role qualifications](https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroesestruturais/bridge/Cargo.java): `src/main/java/padroesestruturais/bridge/Cargo.java`
- [Course contents](https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroesestruturais/composite/Conteudo.java): `src/main/java/padroesestruturais/composite/Conteudo.java`
- [Course additions](https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroesestruturais/decorator/CursoDecorator.java): `src/main/java/padroesestruturais/decorator/CursoDecorator.java`
- [Student services facade](https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroesestruturais/facade/AlunoFacade.java): `src/main/java/padroesestruturais/facade/AlunoFacade.java`
- [Shared cities](https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroesestruturais/flyweight/CidadeFactory.java): `src/main/java/padroesestruturais/flyweight/CidadeFactory.java`
- [Student data proxy](https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroesestruturais/proxy/Aluno.java): `src/main/java/padroesestruturais/proxy/Aluno.java`
- [Student data source](https://github.com/marcoaparaujo/padroes-projeto/blob/master/src/main/java/padroesestruturais/proxy/BD.java): `src/main/java/padroesestruturais/proxy/BD.java`

## Connections

- Signature chain → Signature chain: forwards signature
- Arithmetic interpreter → Expression types: evaluates expression
- Student lifecycle → Lifecycle states: delegates transition
- Grade operations → Calculator context: creates and calls
- Person visitor → Visitor elements: dispatches display
- Student prototype → Address clone: clones address
- Grade adapter → Concept grades: sets and reads
- Student data proxy → Student data source: loads student
