Cadastre-se Revistas DevMedia Cursos
 

Space de Fabio Rodrigues e Souza
Busca Autor


Últimas 20 atualizações de Fabio Rodrigues e Souza

Artigo - Padrão Abstract Factory

Dando continuidade a série de publicações sobre padrões de projetos, hoje falaremos sobre o Abstract Factory.

Considere uma aplicação onde eu possa ter múltiplas interfaces gráficas, a principio apenas duas,  mas que eu possa adicionar quantas eu quiser. Devemos pensar em fazer isso da forma mais escalável possível, é aí que entra um padrão de Projeto: Abstract Factory.

Criarei dois tipos de interfaces distintas: “KDE” e “Gnome”.

A idéia é que a aplicação não chame diretamente as classes concretas, e que a adição ou remoção de um tipo de interface dê o menor trabalho possível, portanto vamos criar uma classe abstrata para que a classe cliente que necessitar de uma janela, por exemplo, não saiba se a janela é de “KDE” ou “Gnome”, ela tem de saber apenas que é uma janela.   

Temos o seguinte diagrama:



As classes KDEFactory e GnomeFactory herdam de AbstractGui, ambas tem dependência da Classe AbstractJanela e AbstractBotao, porém não falaremos sobre isso agora.

A classe AbstractGui irá decidir, em tempo de execução, qual a interface que deverá ser instanciada.

Temos então, os métodos sobrescri

...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
03/12/2011 19:14:00





Artigo - Padrão Adapter

Padrão Adapter

Recentemente tenho me dedicado bastante a estudar sobre padrões de projetos - Design Patterns - e tenho visto alguns bem usuais, e então pretendo publicar uma série sobre esse tão discutido assunto.

Pois bem, como diz a definição Design Patterns segundo a Wikipedia:

"descrevem soluções para problemas recorrentes no desenvolvimento de sistemas de software orientados a objetos. Um padrão de projeto estabelece um nome e define o problema, a solução, quando aplicar esta solução e suas conseqüências."

Hoje falarei sobre o padrão "Adapter", que consiste no seguinte problema: Reutilizar Objetos incompatíveis.

Vou utilizar uma situação-problema real:

Imagine que em meu sistema eu tenha uma classe compra, que para fazer o pagamento, utiliza o método Billing, e que esse método espera algo que herde de uma interface IPagamento.
Cartão de crédito é uma classe abstrata que herda de IPagamento.

Boleto é uma classe que herda de IPagamento.

Visa e master são as implementações reais que utilizávamos, até então, para fazer o Billing dependendo do cartão que o cliente utilizava, e a propósito, elas herdam de CartaodeCredito. Segue o diagrama:

...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
09/10/2011 20:23:00





 

Analista de Sistemas .net, Universitário e apaixonado por TI.
Arquivo de atualizações
 2011

Estatísticas do Autor:
Número de posts: 2
Características dos posts deste autor:
Conteúdo:
Utilidade:
2 0
 
DevMedia Group - Tel: (21) 3382-5038 - www.devmedia.com.br
Todos os Direitos Reservados a DevMedia Group