-
don't talk to Stranges em minha opinião não tem nada a ver com Polimorfismo.
-
Esse padrao Don’t Talk to Strangers não existe. Os padroes GRASP sao:
- Criador (Creator);
·
Especialista na Informação (Information Expert);
·
Baixo Acoplamento (Low Coupling);
·
Alta Coesão (High Cohesion);
·
Controlador (Controller);
·
Polimorfismo (Polymorphism);
·
Fabricação/Invenção Pura (Pure Fabrication);
·
Indireção (Indirection);
·
Variações Protegidas (Protected Variations).
-
O padrão Don’t Talk to Strangers tem o objetivo de fortalecer o encapsulamento.
-
"O objetivo de ambos os padrões é substituir um componente sem afetar outro componente"
(acredito que ele esteja fazendo referência ao padrão Baixo Acoplamento e não ao Polimorfismo)
-
Algumas referências citam Don’t Talk to Strangers e outras Protected Variations.
Atualmente Protected Variations substituiu Don’t Talk to Strangers:
"But in the second edition the more general PV (Protected Variations) replaced Don't Talk to Strangers, because the latteris a special case of the former."
Mesmo assim, o erro na afirmação não está relacionado ao nome do padrão, mas sim em citar que Polimorfismo lida com alternativas embasadas no tipo de componente enquanto Don’t Talk to Strangers (atual Protected Variations implementa polimorfismo em nível de classe.
É o contrário.
Sobre Don’t Talk to Strangers:
"This pattern is in line with the Pure Fabrication and Indirections in a sense that it addresses similar concerns. The principles are same like low coupling high cohesion, reuse but the focus is on protecting the existing objects from variations. i.e. creating a stable interface so to protect from variations in coupled objects."
-
GRASP - DON´T TALK TO STRANGERS
•Problema: Como seria possível fortalecer o encapsulamento?
– O conhecimento da estrutura interna de relacionamentos de uma classe pode dificultar a manutenção.
•Solução: Segundo a Lei de Demeter, um método “A” deve enviar mensagens somente para:
– O próprio objeto (this)
– Os próprios atributos
– Os argumentos do próprio método “A”
– Um objeto criado no método “A”
– Um elemento de alguma coleção que seja atributo, argumento ou criada no método “A”