terça-feira, 3 de junho de 2008

Padrão Polimorfismo - Aulas 29-30

Bom, nesta postagem iremos tratar a respeito de Padrões GRASP: Padrões Gerais de Atribuição de Responsabilidades de Software, conforme já vimos neste blog, já falamos a respeito de padrões Especialista, Criador, Coesão Alta, Acoplamento Fraco e Controlador. E nos próximos posts iremos continuar a tratar sobre o princípios fundamentais de atribuição de responsabilidades, que envolve
Polimorfismo
Invenção Pura (Pure Fabrication)
Indireção (Indirection)
Não fale com estranhos (Don’t talk to strangers)


Polimorfismo


Alternativas com base no tipo: variação condicional é comumente encontrada em programas.
Uso de lógica condicional: torna difícil a extensão de um programa para atender novas variantes, pois mudanças são necessárias em vários lugares.
Componentes de software “conectáveis” : sendo os componentes do tipo cliente-servidor, como substituir um componente servidor, sem afetar o cliente?


Problema: Como tratar alternativas com base no tipo ? Como criar componentes de software conectáveis ?
Solução: Atribuir responsabilidade pelo comportamento, aos tipos para os quais o comportamento varia, usando operações polimórficas.
Corolário: não teste o tipo de um objeto nem use condições lógicas no código para executar alternativas que variam com base no tipo


Exemplo: No sistema TPV, quem deveria ser o responsável pela autorização de diferentes tipos de pagamentos?
Como a autorização varia de acordo com o tipo de pagamento (dinheiro, cartão de crédito ou cheque), usando o padrão Polimorfismo devemos atribuir a responsabilidade à cada tipo de pagamento, implementada como uma operação polimórfica autorizar.


Polimorfismo (Benefícios)


Facilidade de extensão: futuras extensões, quando necessárias para novos tipos não previstos, são fáceis de acrescentar
Objetos clientes: necessitarão pouca ou nenhuma modificação, na medida que o novo servidor suporte as operações polimórficas esperadas pelo cliente

Nenhum comentário: