terça-feira, 29 de janeiro de 2008

Strategy


Na mesma linha do post anterior, no qual exemplifiquei a utilização de um padrão de projeto Estrutural, neste post vou exemplificar a utilização de um padrão de projeto comportamental bastante interessante, o Strategy ou Estratégia.

Este padrão objetiva definir uma família de algorítimos, encapsular cada um deles e torná-los intercambiáveis. Com o padrão Strategy a lógica pode variar independente dos clientes que a utilizam.

Um dos motivos de sua utilização pode ser definido como o tratamento de problemas que necessitam de diferentes algorítimos para determinadas situações, sendo que, com a utilização do padrão novos algorítimos podem ser acrescentados a aplicação sem que se faça necessário alterações da estrutura do software.

Abaixo segue um diagrama demonstrativo do padrão :


(Clique na imagem para melhor visualização)

"Quando o trabalho é prazer, a vida é uma grande alegria. Quando o trabalho é dever, a vida é escravidão"


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. "