SOLID é um acrônimo dos cinco primeiros princípios da programação orientada a objetos e design de código identificados por Robert C. Martin (ou Uncle Bob) por volta do ano 2000. O acrônimo SOLID foi introduzido por Michael Feathers, após observar que os cinco princípios poderiam se encaixar nesta palavra, as siglas significam:

S - Single Responsibility Principle (Princípio da Responsabilidade Única)

Este princípio nos diz que “uma classe deve ter um, e somente um, motivo para mudar", porém pode ser aplicado a funções, componentes, entidades, etc. Esse princípio declara que uma classe deve ser especializada em um único assunto e possuir apenas uma responsabilidade dentro do software, ou seja, a classe deve ter uma única tarefa ou ação para executar. Comumente quando estamos programando orientado a objetos, acabam violando este princípio e muitas vezes criamos classes que fazem de tudo, chamadas na literatura de “God Class”, inicialmente tudo deve funcionar bem, porém quando for necessário realizar uma alteração nessa classe, será difícil modificar umas de suas funcionalidades sem comprometer outras partes do sistema.

Abaixo temos um exemplo de código que não usa o princípio da responsabilidade única, quando olhamos inicialmente o código não encontramos nenhum problema, já que o método “UsuarioValido” trata algo relacionado ao usuário, o método “temCargo” trata do cargo de um usuário, porém vamos imaginar que ocorra um problema no método “temCargo”, não só os usuários não vão conseguir realizar o login no sistema, como todas as funcionalidade relacionada a este método irão parar de funcionar, e o mesmo ocorre com o método “usuarioValido”. Para este código pode-se dizer que a classe usuário tem pelo menos três motivos para mudar seus atributos getters e setters, o método “usuarioValido” e o método “temCargo”, ferindo o princípio da responsabilidade única, deixando a classe menos coesa e com um nível alto de acoplamento.