Blog do MX Cursos

SOLID – Princípio da Responsabilidade Única com PHP

SOLID – Princípio da Responsabilidade Única com PHP

Uma classe precisa ter uma única responsabilidade e apenas um motivo para alterá-la. É o que informa o SRP – Single Responsability Principle (Principio da Responsabilidade única), que é um dos componentes do SOLID.

O que é o SOLID

O SOLID é um conjunto de orientações para você possa trabalhar melhor com a Orientação a Objeto.

  • Single Responsability Principle
  • Open/Closed Principle
  • Liskov Substitution Principle
  • Interface Segregation Principle
  • Dependency Inversion Principle

O S, que seria o Single Responsability Principle, que iremos tratar nesse artigo. Tende a evitar as classes chamadas God Class, que são classes que fazem tudo, e com isso podem ser problemáticas. Se você precisa ficar alterando vários pontos da sua classe, tem uma maior possibilidade de dar algum bug.

A aplicação do SRP (Single Responsability Principle)

Precisamos criar um cadastro de contato básico, apenas nome e e-mail, e a classe precisará realizar o cadastro e enviar um e-mail para o contato que foi cadastrado.

Segue a classe:

Na classe acima, ela tem mais de uma responsabilidade: ela é responsável pelos dados, por fazer persistência, por conectar ao banco de dados e enviar um e-mail.

Ela tenta se responsabilizar por todas as etapas.

Para utilizar, seria assim:

Apesar da execução parecer simplificada, a classe possui vários problemas: a falta de encapsulamento dos dados, conexão do banco de dados definida dentro da classe (se precisarmos alterar os dados da conexão ou se precisarmos criar um template para o e-mail, teremos que mexer na mesma classe).

Essa classe é bem problemática, porque falta coesão e ela é muito acoplada, não permitindo variações ou utilizações separada dos itens.

E com isso, é preciso separar essas responsabilidades. Vamos refatorar a classe, e separar cada responsabilidade em classes distintas.

Refatoramos a nossa classe, e criamos 3 classes:

  • Uma classe Contact, que é entidade, responsável por representar um Contato.
  • Uma classe ContactSendMail que é responsável por disparar o e-mail.
  • Uma classe ContactDAO que é responsável pela interação com Banco de dados.

Como deve ser utilizada:

Conclusão

Cada classe tem o nome coerente do que é responsável, facilitando assim a forma de trabalhar com elas.

É importante ressaltar, que a questão não é ter um método por classe, e sim que os métodos dessa classe sejam coerentes com que o que classe se propõe a fazer.

Caso queira se aprofundar mais sobre SOLID, utilizando no PHP, temos um excelente curso sobre o tema, que você pode assistir uma prévia acessando: Curso de SOLID com PHP

E você? Já usou o SOLID em alguma aplicação? Deixe seu comentário abaixo e compartilhe sua experiência conosco.

David CHC

David CHC

Trabalha com programação há mais de 10 anos e atualmente é líder técnico do MX Cursos, empresa onde atua desde 2010.

Comente!

5 Shares
Share1
Tweet4
+1
Share