-
Notifications
You must be signed in to change notification settings - Fork 0
OCP
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
Exemplos em Código
- Exemplo 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:
- 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.