domingo, 27 de janeiro de 2008

Facade



Neste post tenho como intuito fazer uma breve introdução com relação aos Padrões de Projeto ou Design Patterns.

Estas técnicas são extremamente importantes para o desenvolvedor de software orientado a objetos, pois a sua utilização na solução de problemas condizentes com o padrão, permitem o desenvolvimento de soluções robustas, com alto grau de reutilização e fácil manutenção.

Padrões de projeto ou Design Patterns, são soluções para problemas recorrentes, que ja foram testados e homologados, utilizados no desenvolvimento de software orientado a objeto. Basicamente os padrões são divididos em 3 tipos, sendo padrões de Criação, Estruturais e Comportamentais.

Os padrões de Criação visam solucionar problemas referentes a criação de objetos, que pode dificultar o desenho da aplicação e aumentar a complexidade do mesmo. Visam controlar a forma como os objetos são criados e o momento de sua instanciação, permitindo que o software se torne independente de todo este processo.

Os padrões Estruturais trabalham com a composição de classes ou Objetos para formação de estruturas maiores, descrevem formas de compor objetos para obtenção de novas funcionalidades, possibilidade para alterar a composição em tempo de execução, o que não é possível com uma hierarquia de classes, e utilizam herança para compor interfaces ou implementações .

Os padrões Comportamentais observam a maneira como as classes e objetos podem interagir, procupam-se com algorítimos e atribuição de responsabilidades entre os objetos, descreve tanto padrões de objetos e classes, como padrões de comunicação entre eles. Padrões comportamentais de classes utilizam herança para distribuir o comportamento entre classes e de Objetos utilizam composição em vez de herança para distribuir o comportamento entre objetos.


Neste primeiro post sobre o assunto vou exemplificar um padrão estrutural bastante conhecido, o Facade ou Fachada.

O Padrão Facade visa simplificar a utilização de um subsistema complexo implementando uma classe que fornece uma interface única e mais razoável. Quando você precisar dos recursos do subsistema complexo, eles continuarão existindo, mas, quando você precisar somente de uma interface simples, a Fachada desempenhará esse papel.

Uma definição mais técnica da Facade : Fornece uma interface unificada para um conjunto de interfaces em um subsistema. A Fachada define uma interface de nível mais alto que facilita a utilização do subsistema.


Abaixo segue um Diagrama demonstrativo do padrão :
(Clique na imagem para melhor visualização)
"Ninguém sabe tanto que não necessite aprender, ninguém sabe tão pouco que não possa ensinar. "

5 comentários:

Gustavo disse...

Muito bom, padrões de projeto são muito uteis no dia a dia de um desenvolvedor OO, por ja terem sidos testados e validados para um deteminada situação e com isso facilitando o seu uso e reutilização...

Anônimo disse...

Exatamente. Muito bem explicado este primeiro post. Podemos acrescentar que o padrão facede funciona como o um gerenciador de serviços proporcionando a comunicação fluente entre os niveis superiores e inferiores do sistema.

Thiago Tácito disse...

Isso aí Marcelo.

Apenas lembrando que mesmo sendo muito importantes, e de fato são, devemos tomar muito cuidado com a aplicação de padrões. Isso pode se tornar uma anti-padrão.

Abraços!!!

Unknown disse...

um facade é uma classe de entrada para um ponto do sistema? ele deve acessar as classes necessarias para isso?

Unknown disse...

para eliminar falhas temos que tornar um sistema robusto , para torna-lo esse uma maior complexidade de software que pode atrapalhar avanços futuros a nao ser que segue-se um projeto baseado em padroes ...interessante marcelo

abracos