Bem-vindos à nossa comunidade!

Junte-se a nós e faça parte hoje mesmo!

Design Patterns - implementação com interface vs classe abstrata

Leandro Novaes

Novo Membro
Cadastro
22/2/21
Postagens
2
Curtidas
4
Pontuação
3
Cidade
São Vicente
Estou acompanhando o curso de Design Patterns e decidi implementar a Factory (half simple) com TypeScript, mas usei Interfaces ao invés de classes abstratas.
Gostaria de saber se está correto o que fiz, ou se tem melhor forma de resolver isso.

Aqui está o repositório e pra rodar o projeto: npm install e npm run start.

Não encontrei um local mais apropriado para abrir este tópico, caso errado, desculpe! :)
 

Arthur Bandeira

Arthur Oliveira
Moderador
Cadastro
24/9/20
Postagens
75
Curtidas
110
Pontuação
90
Cidade
Fortaleza
Muito show sua implementação, @Leandro Novaes ! Cara é muito satisfatório ver um Design Pattern sendo aplicado! É tão elegante!

Quanto ao fato de ser classe abstrata ou interface, na minha opinião, no frigir dos ovos o resultado acaba sendo o mesmo, no entanto a semântica que ambas passam é diferente. Sinto que classes abstratas representam melhor uma espécie de "modelo", enquanto interfaces representam uma espécie de "contrato" que possui uma série de comportamentos a serem respeitados e implementados.

No caso do Factory, eu provavelmente optaria por uma classe abstrata. Visto que muito raramente vemos herança múltipla, então eu poderia restringir a fonte de herança da minha classe. Enquanto interfaces deixam mais aberto, já que podemos implementar várias.

Não sei como o Factory lida com isso, mas podemos também ter implementações dentro das classes abstratas, o que não é possível dentro de interfaces. Talvez no futuro isso seja útil ou talvez seja proibido no caso das Guidelines do Design Pattern, mas tenha em mente que você sempre pode adaptar para o seu cenário.
 
Top