Builder Pattern em ColdFusion

On 14 de outubro de 2014, in CFML, Design Pattern, by andersonstraube

Builder é um padrão de projeto de software que permite a separação da construção de um objeto complexo da sua representação, de forma que o mesmo processo de construção possa criar diferentes representações.
Fonte: http://pt.wikipedia.org/wiki/Builder

Quando usar o Padrão Builder:

Continue reading »

Tagged with:  

State Pattern em ColdFusion

On 13 de outubro de 2014, in CFML, Design Pattern, by andersonstraube

State é um padrão de projeto de software usado para permitir que um objeto altere o seu comportamento quando o seu estado muda. Ao utilizar este padrão, parecerá que o objeto mudou de classe.
O padrão State deve ser utilizado nas seguintes situações:
O comportamento de um objeto depende fortemente do seu estado e ele deve alterar o seu comportamento em tempo de execução dependendo do estado. Os métodos têm instruções condicionais grandes em que as condições dependem do estado do objecto. Este estado é normalmente representado por uma ou mais constantes do tipo enumerado. Frequentemente, vários métodos contém esta mesma estrutura condicional. O padrão State coloca cada ramo da instrução condicional numa classe separada. Desta forma, o estado do objecto pode ser tratado como um objecto ele próprio, o qual pode variar
Fonte: http://pt.wikipedia.org/wiki/State

Quando usar o Padrão State:

Continue reading »

Tagged with:  

Facade Pattern em ColdFusion

On 13 de outubro de 2014, in CFML, Design Pattern, by andersonstraube

Em padrões de projeto de software, um façade (fachada em francês) é um objeto que disponibiliza uma interface simplificada para uma das funcionalidades de uma API, por exemplo. Um façade pode:
Tornar uma biblioteca de software mais fácil de entender e usar;
Tornar o código que utiliza esta biblioteca mais fácil de entender;
Reduzir as dependências em relação às características internas de uma biblioteca, trazendo flexibilidade no desenvolvimento do sistema;
Envolver uma interface mal desenhada, com uma interface melhor definida.
Fonte: http://pt.wikipedia.org/wiki/Fa%C3%A7ade

Em resumo, um Facade é um objeto que proporciona uma visão simplificada de um sistema subjacente mais complexo, o que torna mais fácil de usar e entender.
Vamos exemplificar o uso deste padrão com um sistema bem simples de construção de carros.
Um carro é formado por um conjunto de objetos e cada um deles pode ser complexo, por exemplo: Direção Hidráulica exige uma série de fatores/passos para construir, envolve caixa de direção, coluna de direção, mangueira, bomba hidráulica, polia, correia, etc… Assim como a construção do próprio carro exige uma série de objetos e passos para construí-los, imagine criar um sistema desses com um método de construção de carros onde a lógica está toda envolvida nesse método, ou seja, por si só a construção de um carro já é complexa, some isso com cada objeto subjacente que necessita ser criado para formar o todo.

Continue reading »

Tagged with:  

Mediator Pattern em ColdFusion

On 13 de outubro de 2014, in CFML, Design Pattern, by andersonstraube

Um mediator, em linguagem de programação de computadores, é quem desacopla e gerencia as colaborações entre um grupo de objetos. Define um objeto que encapsula as interações dentre desse grupo.
É um dos 23 padrões de projetos descritos para reutilização de softwares orientados a objetos. Ele permite a unificação da interface de um sistema. Esse padrão é considerado um padrão comportamental devido à maneira como ele pode alterar a execução do software.
Normalmente, um programa é feito por um número muito grande de classes. Então, a lógica e o código são distribuídos entre essas classes. No entanto, quanto mais classes houver no seu projeto, a comunicação entre essas classes será mais complexa. Isso faz com que a leitura e a manutenção do programa fique mais difícil, tal situação acarreta na dificuldade de mudanças no projeto, já que, uma simples mudança pode afetar todo o código e as outras classes.
Com o padrão mediator, a comunicação entre os objetos é encapsulada com um objeto mediador. Isso reduz a dependência entre os objetos que estão se comunicando.
Fonte: http://pt.wikipedia.org/wiki/Mediator

O padrão Mediator fornece uma técnica para tratar a lógica de comunicação complicada entre vários objetos que precisam interagir uns com os outros.

Quando usar?

Abaixo está um exemplo desse tipo de comunicação:

Continue reading »

Tagged with:  

Iterator Pattern em ColdFusion

On 10 de outubro de 2014, in CFML, Design Pattern, by andersonstraube

Iterator, em programação de computadores, permite a “iteração” e um modo de acesso a elementos de um agregado de objetos, sequencialmente, sem exposição de estruturas internas.
Fonte: http://pt.wikipedia.org/wiki/Iterator

Em Orientação a Objetos frequentemente utilizamos estruturas de dados para listar algum conteúdo, normalmente há uma função no componente que retorna esses dados que podem ser de vários tipos, por exemplo: array com índice numérico, estrutura (struct) utilizando uma chave como índice, listas sequenciais, query, e por aí vai….

Continue reading »

Tagged with:  

Strategy Pattern em ColdFusion

On 17 de abril de 2012, in CFML, Design Pattern, by andersonstraube

Strategy é um padrão de projeto de software (do inglês design pattern). O objetivo é representar uma operação a ser realizada sobre os elementos de uma estrutura de objetos. O padrão Strategy permite definir novas operações sem alterar as classes dos elementos sobre os quais opera. Definir uma família de algoritmos e encapsular cada algoritmo como uma classe, permitindo assim que elas possam ter trocados entre si. Este padrão permite que o algoritmo possa variar independentemente dos clientes que o utilizam.
Fonte: http://pt.wikipedia.org/wiki/Strategy

Motivação para usar o Padrão Strategy?

– Quando um sistema possui vários componentes que têm semelhança estrutural porém com comportamentos diferentes;
– Quando tem um algoritmo cujo cálculo pode variar dependendo dos parâmetros fornecidos;
– Você não quer que o componente principal seja alterado e/ou “inflado” toda vez que um novo modo (estratégia) é desenvolvida/solicitada.

Continue reading »

Tagged with:  

Observer Pattern em ColdFusion

On 11 de abril de 2012, in CFML, Design Pattern, by andersonstraube

O Observer é um padrão de projeto de software que define uma dependência um-para-muitos entre objetos de modo que quando um objeto muda o estado, todos seus dependentes sejam notificados e atualizados automaticamente. Permite que objetos interessados sejam avisados da mudança de estado ou outros eventos ocorrendo num outro objeto.
O padrão Observer é também chamado de Publisher-Subscriber, Event Generator e Dependents.
Fonte: http://pt.wikipedia.org/wiki/Observer

Motivação para usar o Padrão Observer?

– Definir uma dependência um-para-muitos entre objetos para que quando um objeto mudar de estado, todos os seus dependentes sejam notificados e atualizados automaticamente;
– Quando um objeto deve ser capaz de avisar outros sem fazer suposições sobre quem são os objetos. Ou seja, sem criar um acoplamento forte entre os objetos;
– Conseguimos reduzir o uso do relacionamento bidirecional por meio de interfaces e classes abstratas, separando a abstração para ter um alto nível de coesão e baixo acoplamento.

Continue reading »

Tagged with:  

Singleton em ColdFusion

On 2 de março de 2012, in CFML, Desenvolvimento, Design Pattern, by andersonstraube

Singleton, é um padrão de projeto de software (do inglês Design Pattern). Este padrão garante a existência de apenas uma instância de uma classe, mantendo um ponto global de acesso ao seu objeto.
O termo vem do significado em inglês quando se resta apenas uma carta nas mãos, num jogo de baralho.
Muitos projetos necessitam que algumas classes tenham apenas uma instância. Por exemplo, em uma aplicação que precisa de uma infraestrutura de log de dados, pode-se implementar uma classe no padrão singleton. Desta forma existe apenas um objeto responsável pelo log em toda a aplicação que é acessível unicamente através da classe singleton.
Fonte: http://pt.wikipedia.org/wiki/Singleton

A maioria das classes/instâncias do ColdFusion (CFC) podem ser transformadas em um singleton, vamos ver como isso funciona na prática:

Continue reading »

Tagged with: