Princípio Especialista de Informação

Em um projetos de software desenvolvemos diversos objetos. Que por sua vez, fazer diversas interações entre si. As escolhas que tomamos ao aplicar responsabilidades nesses objetos definem como será suas interações, se escolhermos bem, teremos sistemas mais fáceis de se entender, de se manter e de estender. Senão! Bem… É melhor nem imaginar.
A principal característica da atribuição de responsabilidades baseado na informação que o objeto detem, está em não sobrecarregar os objetos com responsabilidades que poderiam ser delegadas.
O objeto só deve fazer o que está relacionado com a sua abstração. Para isso, delega as demais atribuições para quem está mais apto a fazer. Quando o objeto não sabe quem é o mais apto, pergunta para algum outro objeto que saiba.

Problema: Qual é um princípio geral de atribuição de responsabilidade a objetos?

Solução: Atribua responsabilidade a classe que tem a informação necessária para satisfazer a responsabilidade.

Dica: Pergunte se realmente aquela responsabilidade é relevante ao objeto, enuncie claramente a responsabilidade do objeto. Que objeto é responsável por conhecer/fazer [coloque a responsabilidade do objeto aqui]? Esse questionamento irá auxilia-lo a definir melhor os atributos e métodos de seus objetos.

O Especialista de Informação é um princípio básico usado continuamente no projeto de objetos, ele expressa a “intuição” comum de que objetos fazem coisas relacionadas a informação que têm.
Geralmente fazem operações de coisas inanimadas que representa no mundo real. Por exemplo, uma venda não informa o seu total, ela é algo inanimado. Alguém calcula o total da venda. Craig Larman denomina isso como princípio da “animação” no projeto de objetos.

Vantagens:

  • Mantém o encapsulamento pois utiliza informações próprias e apóia ao acoplamento baixo.
  • Distribui o comportamento uniformemente entre as classes do sistema, aumentando a coesão das mesmas.

Contra-indicação:
Em algumas situações, a sugestão sugerida pelo especialista é indesejável, em geral por causa de problemas de acoplamento e de coesão.

Referência:

Deixe um comentario


OBS - Você pode usar estes atributos HTML e tags para formatar seus comentário:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">