Princípio Criador

Criar objetos em sistemas orientados a objetos é algo rotineiro. Porem quem cria o objeto X? Qual a classe que deve ter essa resposabilidade? São questões levantadas em diversos momentos da implementação do código.
Apesar de ser um processo simples, a instânciação de objetos no código sem uma devida análise dos impactos pelo programador acarreta em um projeto com um alto acoplamento, tornando difícil sua manutenção e reutilização.

Problema: Definir adequadamente aplicando o conceito de responsabilidade qual objeto é responsável pela criação de uma nova instância dentro da aplicação.

Solução: Atribua à classe B a resposnabilidade de criar a instância da classe A se uma das seguintes condições for verdadeira(quanto mais melhor):

  1. B “contém” A ou agrega A de modo composto
  2. B registra A
  3. B usa A de maneira muito próxima
  4. B tem os dados iniciais de A

O princípio criador auxilia na definição de qual objeto deve ser responsável por criar uma nova instância de classe. Essa atribuição bem definida da apoio para que o projeto apresente um baixo acoplamento, melhor encapsulamento e reutilização.
Repare que a escolha adequada desse princípio (criador) impacta no princípio de baixo acoplamento.
Outra forma de relacionamento também presente é de especialista de informação que é dado pela identificação de classes que possui os dados iniciais que serão passado como parâmetros durante a criação do objeto, mencionsado na condição 4.
A identificação de relacionamentos de objetos por composição ou agregação é uma boa diretriz para identificar os objetos que serão responsáveis por instânciar classes.

Contra-Indicações: Os processos onde é necessário instânciar classes de uma determinada família com base em um valor propriedades externa, é aconcelhável a delegar esse atividade a classes auxiliares chamadas de Fabrica Concreta ou Abstrata.

Composição ou Agregação?

Outro ponto onde programadores apresentam dúvidas é definir quando um relacionamento é dado por composição ou agregação.

Relacionamentos de composição, é dado pela dependência na qual o tempo de vida de um objeto é controlado por outro que o criou. Em outras palavras, o ciclo de vida do objeto depende do tempo de vida de quem o criou.
Composição

Relacionamentos de agregação, o tempo de vida dos objetos são independentes, ou seja, se o controlador for destruido, o objeto contido não será.
Agreagação

Podemos perceber que relacionamentos de composição quase sempre serão responsáveis por criarem objetos de seus relacionamentos, porem relacionamentos do tipo agregação normalmente não.

Be Sociable, Share!

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="">