Skip to content
julinha edited this page Oct 11, 2023 · 2 revisions

OCP

Open-Closed Principle ​

Objetos ou entidades devem estar abertos para extensão, mas fechados para modificação, ou seja, outras classes podem ter acesso ao que aquela classe possui, porém, não podem alterá-las. ​

​ “Aberto para extensão” diz que você deve projetar suas classes para que novas funcionalidades possam ser adicionadas à medida que novos requisitos são gerados.

“Fechado para modificação” significa que uma vez que uma classe tenha sido desenvolvida ela nunca deve ser modificada, exceto para corrigir bugs e demais problemas no código.

A ideia aqui não é não mexer na classe em hipótese alguma, e sim, caso necessário, adicionar uma nova função àquela classe e não alterar o que já existe nela. ​

Exemplo

Exemplo Cozinha

Exemplos em Código

  • Exemplo Boa Prática:

boa prática

  • A classe Pagamento é aberta para extensão, pois você pode criar novas implementações de MetodoPagamento sem modificar o código-fonte da classe Pagamento existente. Utilizando o princípio OCP, onde a classe Pagamento é fechada para modificação e aberta para extensão.

Exemplo Má Prática:

ma pratica

  • A classe Pagamento possui métodos específicos para cada forma de pagamento, como realizarPagamentoCartaoCredito e realizarPagamentoPayPal. Se precisar adicionar um novo método de pagamento, seria necessário modificar a classe Pagamento, o que não segue o OCP, já que ela não está fechada para modificação.
Clone this wiki locally