SINGLE RESPONSIBILITY PRINCIPLE
Conforme descrito por Patterson, o Single Responsibility Principle (SRP) informa que:
“uma classe deve ter uma e somente uma responsabilidade, i.e., que uma classe, somente pode ter uma razão para ser modificada.”
Para exemplificar o SRP utilizaremos a classe SuperDashboard apresentada na Figura 18. Observe que a classe dita “pequena”, possui duas razões para mudanças. A primeira razão, a classe possui um controle da informação sobre a versão do software. Por último, a classe faz um controle swing da interface (extends JFrame). O SRP é um dos princípios mais importantes e simples de OO.
Identificar responsabilidades de uma classe, ou módulo, auxilia a reconhecer e crear abstrações nos códigos. Por exemplo, ao extrair os três métodos da classe SuperDashboard, responsáveis pelo controle da informação da versão e criarmos a classe Version (Figura 19), com esses métodos, aplicamos o SRP. Além disso, a classe Version é um constructo que tem um alto potencial para reuso em outras aplicações.
Figura 19 – Classe criado pelo SRP.
Apesar dos benefícios do SRP, muitos programadores pensam que um sistema com muitas classes é ruim para o entendimento do software por completo, pois é necessário navegar por uma grande quantidade de classes para entender o software. Por outro lado, um sistema com grandes classes tem o mesmo número de partes a serem modificadas do que um sistema com muitas classes pequenas.
Para solucionar o problema supracitado, o desenvolverdor deve responder a seguinte pergunta: “Você quer organizar as suas ferramentas em pequenas gavetas organizadas e bem definidas ou em duas ou três gavetas com tudo?” Acredito que a primeira opção seja a escolha adequada.