SOLID: Princípio Aberto/Fechado
- #PHP
O que é o princípio aberto fechado
O Princípio Aberto/Fechado é fundamental para criar um código fácil de estender, permitindo adicionar novas classes, métodos ou funções sem alterar o que já está funcionando. Isso reduz o risco de bugs e melhora a escalabilidade do sistema.
"Entidades de software (classes, módulos, funções, etc.) devem estar abertas para extensão, mas fechadas para modificação."
Isso significa que você deve projetar seu código de forma que novos comportamentos possam ser adicionados sem alterar o código existente.
Exemplo de código
// Contrato.php
<?php
interface TipoContrato {
public function remuneracao();
}
class Contrato {
private $tipoContrato;
public function __construct(TipoContrato $tipoContrato) {
$this->tipoContrato = $tipoContrato;
}
public function tipoRemuneracao() {
return $this->tipoContrato->remuneracao();
}
}
// ContratoCLT.php
<?php
class ContratoCLT implements TipoContrato {
public function remuneracao() {
return "2000R$";
}
}
// ContratoPJ.php
<?php
class ContratroPJ implements TipoContrato {
public function remuneracao() {
return "3000R$";
}
}
// index.php
<?php
require 'Contrato.php';
require 'ContratoCLT.php';
require 'ContratoPJ.php';
$contrato = new Contrato(new ContratoCLT);
echo $contrato->tipoRemuneracao();
Conclusão
O objetivo é fazer com que a classe Contrato
não precise conhecer o tipo específico de contrato que está sendo utilizado. Ela só precisa saber que existe um método definido pela interface e que ele será implementado de acordo com o tipo de contrato passado no construtor. Isso simplifica a criação de novas classes, caso seja necessário adicionar um terceiro tipo de contrato, sem a necessidade de alterar o código que já está funcionando. Com isso, temos mais autonomia para implementar e escalar o código, reduzindo o risco de bugs em classes que já foram desenvolvidas.
Redes Sociais
🔗 GitHub: github.com/GiulianoCriscuoli
🔗 LinkedIn: Giuliano Criscuoli
🔗 Instagram: @southlaser