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
Last synced: 10 months ago · JSON representation

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
Created 11 months ago · Last pushed 11 months ago
Metadata Files
Readme

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 { <> NOTEBOOK DESKTOP SERVER }

%% 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

Full Stack Developer passionate about technology since 2006.

GitHub Events

Total
Last Year

Committers

Last synced: 11 months ago

All Time
  • Total Commits: 9
  • Total Committers: 2
  • Avg Commits per committer: 4.5
  • Development Distribution Score (DDS): 0.222
Past Year
  • Commits: 9
  • Committers: 2
  • Avg Commits per committer: 4.5
  • Development Distribution Score (DDS): 0.222
Top Committers
Name Email 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


Dependencies

custom-pc/pom.xml maven