Padrão de Projeto Singleton: Multithreading & Testes Unitários Expõem os Riscos deste Design Pattern

  Рет қаралды 1,619

Renato Augusto

Renato Augusto

Күн бұрын

Padrões de Projetos: Soluções Reutilizáveis de Software Orientados a Objetos - amzn.to/48j316d
Padrão de Projeto Singleton: Multithreading & Testes Unitários Expõem os Riscos deste Design Pattern!
O padrão de projeto Singleton é amplamente utilizado para garantir que uma classe tenha somente uma instância durante a execução de um programa. Embora pareça uma solução simples e eficaz, o uso do Singleton pode causar sérios problemas, principalmente quando lidamos com multithreading e testes unitários.
Neste vídeo, vamos explorar como o Singleton pode ser um anti-padrão e as dificuldades que ele impõe para desenvolvedores, especialmente em cenários envolvendo execução paralela e testes automatizados. Você entenderá os impactos desse padrão no desempenho de sistemas multi-threaded, onde múltiplas threads tentam acessar a mesma instância da classe, criando condições de concorrência que podem levar a erros difíceis de diagnosticar.
Além disso, veremos como o Singleton interfere nos testes unitários, tornando o processo de isolamento de comportamentos e de mocking de dependências mais complexo. Isso pode resultar em testes falhos e no aumento da complexidade de manutenção do código. Você aprenderá também como a orientação a objetos e os design patterns podem ser melhor aplicados para evitar essas armadilhas.
Se você é um programador que trabalha com orientação a objetos e se interessa por design patterns como o Singleton, Factory, Strategy ou Observer, este vídeo é essencial para aprimorar sua compreensão sobre como esses padrões funcionam no mundo da arquitetura de software e quais são suas vantagens e desvantagens.
Assista e descubra por que o padrão Singleton pode ser perigoso para sua arquitetura de software e como você pode melhorar a qualidade do seu código utilizando abordagens mais modernas e eficientes.
🎯 Quem deve assistir?
👨‍💻 Desenvolvedores e Programadores: Que desejam criar códigos mais flexíveis e escaláveis, utilizando design patterns.
📚 Estudantes de TI e Engenharia de Software: Que querem entender melhor os design patterns e a orientação a objetos do jeito certo.
💼 Profissionais de TI: Interessados em melhorar a estrutura de seus projetos com soluções elegantes e eficientes.
✅ Deixe seu like, comente e se inscreva para mais conteúdos sobre Programação, Tecnologia em Geral, Arquitetura de Software e Carreira em Tecnologia.
#designpatterns #orientacaoaobjetos #singleton #programacao #cleancode #solid

Пікірлер: 17
@milkshakson
@milkshakson 12 күн бұрын
Muito bom.
@epahpaciencia
@epahpaciencia 14 күн бұрын
Esse cara é sensacional, conteudo caro mas gratis. E depois vem um doido e diz com uns minutos de tutorias no youtube você apreende a programar. Familia rumo a 10K
@RenatoAugustoTech
@RenatoAugustoTech 14 күн бұрын
Valeeu demais!!! Tmj, e bora lá.. Rumo aos 10k!!!
@davifariasdrum
@davifariasdrum 16 күн бұрын
Aquele vídeo que tu espera a semana pra assistir! 🎉 Parabéns pelo trabalho sempre Renato!
@RenatoAugustoTech
@RenatoAugustoTech 16 күн бұрын
Hahahah Valeu Davi!! Tmj
@rafaelsantana588
@rafaelsantana588 16 күн бұрын
Excelente vídeo! Estou em fase inicial de desenvolvimento de meu SAAS e estava planejando usar singleton pro banco de dados, já vou aproveitar pra refatorar isso.
@valkthegreat8948
@valkthegreat8948 16 күн бұрын
Eu uso singleton para conectar ao BD, acho bastante coerente ate pq eu a uso em um unico componente quevrealiza as ações do banco, mas vou aprender a nao usar singleton mais, obrigado pela aula
@RenatoAugustoTech
@RenatoAugustoTech 16 күн бұрын
Booa!
@wallisonfelipe5997
@wallisonfelipe5997 16 күн бұрын
Muito bom!
@arturmoises842
@arturmoises842 16 күн бұрын
Top
@ticoh9832
@ticoh9832 16 күн бұрын
Imagine o seguinte cenário: Você precisa acessar uma api A onde retorna um dado X, mas antes você precisa acessar um outro endpoint para pegar a o token de acesso da api A onde tem validade de 15 minutos. Se você não tiver um singleton, vc precisará bater na api do token e sempre pegar um token novo, se você tiver um singleton, você pode salvar esse token e fazer a verificação interna se já tem 15 min ou não, assim você evita ter que ficar batendo em duas api o tempo todo. Isso se escala. E se o tempo de pegar o token for grande, isso atrapalha o tempo total. Estou te passando um cenário que já aconteceu comigo. Consegui reduzir o tempo total da chamada em mais de 10x. Existiria outro padrão ou outra forma que funcionasse da mesma forma sem utilizar o singleton?
@RenatoAugustoTech
@RenatoAugustoTech 16 күн бұрын
Então cara, ao meu ver, esse problema parece ser mais uma questão de implementação e arquitetura das APIs envolvidas. Em sistemas grandes, não é comum que seja necessário pegar um novo token de autenticação para cada requisição. O que geralmente acontece em fluxos de autenticação bem definidos é o seguinte: 
Quando você faz a autenticação na API pela primeira vez, você recebe um token de acesso (geralmente no formato JWT ou similar). Esse token tem uma validade definida, como 15 minutos, 1 hora, ou outro período estipulado pela API que vai fornecer o token pra gente, após obter o token, ele é enviado como parte do cabeçalho de autenticação (Authorization: Bearer token) em todas as requisições subsequentes, enquanto estiver válido. Isso elimina a necessidade de fazer chamadas extras para obter um novo token a cada requisição. Após isso vai chegar um tempo que o token expira daí uma técnica comum pra resolver isso é o uso de um refresh token. Esse é um token secundário, de longa validade, que permite a obtenção de um novo token de acesso sem a necessidade de autenticação completa. Esse processo é disparado automaticamente, sem impactar o funcionamento normal do sistema sacou? No teu caso especificamente acho que pra evitar um singleton poderia utilizar cache (pode trazer problemas de segurança) ou tentar fazer alguma classe que gerenciasse o token talvez, mas se o singleton já está funcionando e atendeu o propósito é isso que importa. Não tem como vencermos todas as batalhas e o singleton sim pode ter seu uso até pq se não fosse útil em alguns contextos ele não estaria nas literaturas dos design patterns
@ricardao069
@ricardao069 15 күн бұрын
a questao e a maioria dos projetos legados com singleton nao tem testes unitarios nem multithread entao ta safe kkkk, estou trabalhando com um codigo legado em as3, das 3mil classes desse sistema pelomenos umas 2mil devem ser singleton.
@RenatoAugustoTech
@RenatoAugustoTech 14 күн бұрын
Força guerreiro! hahaha, mas é isso se não tem testes e nem MT tá super safe!
@victorbiasibetti
@victorbiasibetti 15 күн бұрын
quem usa singleton nem escreve testes unitarios xD
@RenatoAugustoTech
@RenatoAugustoTech 14 күн бұрын
hahahah booa!
7 Design Patterns EVERY Developer Should Know
23:09
ForrestKnight
Рет қаралды 262 М.
Хаги Ваги говорит разными голосами
0:22
Фани Хани
Рет қаралды 2,2 МЛН
Почему Катар богатый? #shorts
0:45
Послезавтра
Рет қаралды 2 МЛН
Eu não sabia o que era Docker até agora...
25:12
Augusto Galego
Рет қаралды 48 М.
SOLID: O Que Ninguém Te Explicou Sobre Responsabilidade Única!
17:59
Renato Augusto
Рет қаралды 2,4 М.
Aprenda Power BI do zero em apenas UMA AULA!! Atualizado 2024
49:20
Vale a pena fazer Análise e Desenvolvimento de Sistemas?
8:51
Renato Augusto
Рет қаралды 8 М.
How Senior Programmers ACTUALLY Write Code
13:37
Thriving Technologist
Рет қаралды 1,7 МЛН
Хаги Ваги говорит разными голосами
0:22
Фани Хани
Рет қаралды 2,2 МЛН