https://github.com/arturbomtempo-dev/design-patterns-workshop
This repository contains the source code and materials from the Design Patterns Workshop I conducted at the Escola de Férias event hosted by PUC Minas.
https://github.com/arturbomtempo-dev/design-patterns-workshop
Science Score: 26.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Committers with academic emails
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (2.1%) to scientific vocabulary
Repository
This repository contains the source code and materials from the Design Patterns Workshop I conducted at the Escola de Férias event hosted by PUC Minas.
Basic Info
- Host: GitHub
- Owner: arturbomtempo-dev
- Language: Java
- Default Branch: main
- Size: 13.5 MB
Statistics
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
- Releases: 0
Metadata Files
README.MD
WorkShop de Design Patterns
Este projeto demonstra a implementação de três padrões de design fundamentais: Factory, Decorator e Singleton, aplicados em um sistema de montagem de computadores personalizados.
Diagrama de Classes UML
```mermaid
classDiagram
%% Enum ComputerType
class ComputerType {
<
%% Interface Computer
class Computer {
<<interface>>
+getDescription() String
+getPrice() double
}
%% Factory Pattern
class ComputerFactory {
+getComputer(computerType: ComputerType) Computer
}
%% Concrete Computer Types
class Notebook {
+getDescription() String
+getPrice() double
}
class Desktop {
+getDescription() String
+getPrice() double
}
class Server {
+getDescription() String
+getPrice() double
}
%% Decorator Pattern
class ComputerDecorator {
<<abstract>>
-computer: Computer
+ComputerDecorator(computer: Computer)
+getDescription() String
+getPrice() double
}
class RAM {
+RAM(computer: Computer)
+getDescription() String
+getPrice() double
}
class GraphicsCard {
+GraphicsCard(computer: Computer)
+getDescription() String
+getPrice() double
}
class SSD {
+SSD(computer: Computer)
+getDescription() String
+getPrice() double
}
%% Singleton Pattern
class AssemblyQueue {
<<singleton>>
-INSTANCE: AssemblyQueue$
-computers: Queue~Computer~
-AssemblyQueue()
+getInstance()$ AssemblyQueue
+addComputer(computer: Computer) void
+markComputerAsAssembled() void
+getNextComputer() Computer
+getQueueSize() int
+getComputers() Queue~Computer~
}
%% Relationships
ComputerFactory --> Computer : creates
ComputerFactory --> ComputerType : uses
Computer <|.. Notebook : implements
Computer <|.. Desktop : implements
Computer <|.. Server : implements
Computer <|.. ComputerDecorator : implements
ComputerDecorator <|-- RAM : extends
ComputerDecorator <|-- GraphicsCard : extends
ComputerDecorator <|-- SSD : extends
ComputerDecorator o-- Computer : decorates
AssemblyQueue o-- Computer : manages
```
Padrões de Design Implementados
1. Factory Pattern (Padrão Factory)
- Classe:
ComputerFactory - Propósito: Criar instâncias de diferentes tipos de computadores (Notebook, Desktop, Server) baseado no enum
ComputerType - Benefício: Encapsula a lógica de criação e facilita a adição de novos tipos de computadores
2. Decorator Pattern (Padrão Decorator)
- Classe Abstrata:
ComputerDecorator - Decoradores Concretos:
RAM,GraphicsCard,SSD - Propósito: Adicionar funcionalidades (componentes) aos computadores de forma dinâmica
- Benefício: Permite combinar diferentes componentes sem modificar as classes base
3. Singleton Pattern (Padrão Singleton)
- Classe:
AssemblyQueue - Propósito: Garantir uma única instância da fila de montagem de computadores
- Benefício: Controle centralizado da fila de montagem em toda a aplicação
Estrutura do Projeto
custom-pc/
├── src/main/java/br/pucminas/
│ ├── app/
│ │ └── Application.java
│ ├── decorator/
│ │ ├── ComputerDecorator.java
│ │ ├── GraphicsCard.java
│ │ ├── RAM.java
│ │ └── SSD.java
│ ├── factory/
│ │ ├── Computer.java
│ │ ├── ComputerFactory.java
│ │ ├── Desktop.java
│ │ ├── Notebook.java
│ │ └── Server.java
│ └── model/
│ └── ComputerType.java
└── singleton/
└── AssemblyQueue.java
Owner
- Name: Artur Bomtempo Colen
- Login: arturbomtempo-dev
- Kind: user
- Location: Belo Horizonte, MG
- Company: @webtech-network
- Website: https://arturbomtempo.dev
- Repositories: 28
- Profile: https://github.com/arturbomtempo-dev
Full Stack Developer passionate about technology since 2006.
GitHub Events
Total
Last Year
Committers
Last synced: 11 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| Artur Bomtempo Colen | a****n@g****m | 7 |
| Eduarda Vieira | e****7@g****m | 2 |
Issues and Pull Requests
Last synced: 11 months ago