image

Acesse bootcamps ilimitados e +650 cursos pra sempre

60
%OFF
Giuliano Criscuoli
Giuliano Criscuoli03/02/2025 09:44
Compartilhe
Nexa - Análise Avançada de Imagens e Texto com IA na AWSRecomendados para vocêNexa - Análise Avançada de Imagens e Texto com IA na AWS

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

Compartilhe
Recomendados para você
Microsoft Certification Challenge #3 DP-100
Decola Tech 2025
Microsoft AI for Tech - Copilot Studio
Comentários (0)
Recomendados para você