Skip to content

Conversation

lucasferreiraz
Copy link

@lucasferreiraz lucasferreiraz commented May 8, 2023

Olá, estou me candidatando à vaga de estágio em Java.

As refatorações mais básicas (iniciais) foram simplesmente para deixar o código um pouco mais enxuto e aplicando um pouco de lambda expressions em parâmetros de funções que anteriormente ao Java 8 não suportavam mas agora aderem perfeitamente (como é o caso do addActionListener() do Swing).

Posteriormente percebi que a classe JogoDosOito estava extremamente sobrecarregada em obrigações e o mesmo se aplica pra diversas funções internas da classe, visto isso apliquei um poucos dos conceitos do SOLID pra diminuir a sobrecarga de trabalho nesta classe e subdividi em outras quatro funcionalidades separadas (Botao, Tabuleiro (regras de negócio), TabuleiroGUI (interface gráfica) e TecladoSubject para ações do teclado )

Tentei aplicar o padrão Observer entre as entidades que vão precisar receber notificações sobre os eventos do teclado e a entidade responsável por monitorar as ações, desta forma, o TecladoSubject implementa uma interface interna do Java (KeyListener) para torna-lo observável, assim deixei em uma estrutura que ficasse claro que as classes em questão fazem parte de um cenário do padrão Observer.

Pra feedbacks ou sugestões pode responder neste pull request ou me mande um email: [email protected] (outros contatos na minha página inicial do perfil).


public class Tabuleiro {

private int[][] tabuleiro = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 0 } };
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

O código mais evoluído que reviso hj.
Contudo, a programação orientada a objetos eh um requisito para vaga (https://pt.stackoverflow.com/questions/274391/diferen%C3%A7a-entre-tipo-primitivo-e-objeto-em-java)

Caso interesse para aprofundar mais o conhecimento, veja o livro Gamma, Erich. Padrões de projetos: soluções reutilizáveis. Bookman editora, 2009.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants