Os Princípios do SOLID — OCP Princípio aberto-fechado

Jones Roberto Nuzzi
2 min readOct 18, 2019

Links dos artigos detalhados:

OCP — Princípio aberto-fechado

Esse principio diz que as classes “devem estar abertas para extensão, mas fechadas para modificação”, com isso passamos evitar possíveis erros a um aplicativo em ambiente produtivo, claro que se a modificação for para corrigir um erro existente no código esse principio não deveria ser aplicado.

Se você tem uma compreensão geral do POO, provavelmente já conhece o polimorfismo. Podemos garantir que nosso código esteja em conformidade com o princípio aberto / fechado, utilizando herança e / ou implementando interfaces que permitem que as classes se substituam polimorficamente uma pela outra.

Isso pode parecer confuso, então vamos fazer um exemplo que deixará muito claro o que quero dizer.

Na classe Post, precisamos fazer algo específico sempre que uma postagem começa com o caractere ‘#’.
No entanto, a implementação acima viola o princípio “OCP” da maneira como esse código difere o comportamento na letra inicial.
Se posteriormente quisermos incluir também menções iniciadas com ‘@’, teremos que modificar a classe com um ‘else if’ extra no método CreatePost.

Vamos tentar tornar esse código compatível com o princípio de OCP usando uma simplesmente herança.

Agora, usando a herança, agora é muito mais fácil criar um comportamento estendido para o objeto TagPost substituindo o método CreatePost().
A avaliação do primeiro caractere '#' agora será tratada em outro lugar (provavelmente em um nível mais alto) do nosso software, e o mais interessante é que, se queremos mudar a maneira como uma postMessage é avaliada, podemos alterar o código lá , sem afetar nenhuma dessas partes subjacentes.

--

--

Jones Roberto Nuzzi

Associado | Arquitetura de Sistemas na Riza Asset, Sempre focado em desenvolvimento de sistemas para o mercado financeiro, com mais de 15 anos de experiência!