Interfaces simplificadas ou abstração de objetos

5

Eu tenho enfrentado uma situação comum no trabalho que aconteceu com bastante frequência ao manusear objetos.

A situação é assim:

Você tem que realçar as classes A e B, a classe A tem instâncias da classe B. Agora, imagine que queremos chamar methodB da classe B, mas só temos acesso a uma intance da classe A. Qual é a melhor abordagem para esta situação e porquê:

Ainstances->getClassBInstance()->methodB();

ou

Ainstances->methodB()

onde o método B é implementado da seguinte forma:

function methodB()
{
  return self.getClassBInstance()->methodB()
}
    
por guiman 08.06.2011 / 16:11
fonte

2 respostas

3

Vá com Ainstances- > methodB ();

Dê A uma cópia do método que simplesmente cai em sua instância B.

Dessa forma, se você decidir refatorar, por exemplo, se você decidir mover methodB da instância A para uma nova classe, C, terá menos refatoração para fazer.

Isso é conhecido como padrão de fachada , e me salvou muitas horas de trabalho doloroso em muitas ocasiões: )

    
por 08.06.2011 / 16:17
fonte
0

O último - isto é, o método methodB () self- > getClassBInstance () - > methodB () - oculta dos usuários de A o fato de que A usa B. Isso reduz o acoplamento.

(Este é um exemplo de aplicação da Lei de Demeter.)

    
por 08.06.2011 / 16:16
fonte