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:  

É comum termos dúvidas sobre a performance de um determinado código, se um loop está otimizado ou não – se fizer uma alteração vai diminuir o tempo de execução, entre outras coisas…

Para sanar essas dúvidas nós podemos usar o console do navegador, para tanto basta criar um identificador para que ele calcule o tempo de execução, veja no exemplo abaixo:

Continue reading »

Tagged with:  

cfqueryparam com lista de valores para a cláusula “IN” do SQL

On 4 de abril de 2012, in CFML, SQL, by andersonstraube

Vamos ver como usar uma lista de valores na cláusula “IN” do SQL utilizando o cfqueryparam do ColdFusion.

Não preciso nem comentar sobre o uso do cfqueryparam, para mim isso é obrigatório por questões de segurança e vários outros fatores.

No código abaixo ele lista os clientes cujo nome está na lista:


<cfquery name="q_Clientes" datasource="#dsn#">
  SELECT 
	*
  FROM 
	clientes
  WHERE 
	nome IN ('Anderson','Maria','João','Zeca')
</cfquery>

Continue reading »

Tagged with:  

Exibir loading nas requisições ajax

On 4 de abril de 2012, in jQuery, by andersonstraube

Neste post vou explicar como exibir a mensagem de “carregando” nas requisições ajax:

Podemos fazer de 2 formas:
1 – Antes da requisição nós exibimos o “loading” e depois da conclusão nós ocultamos;
2 – Fazer isso de maneira automática (é o que vamos ver neste post).

Vamos criar nossa div que será o loading:


<div class="carregando">
  <strong>CARREGANDO</strong>
</div>

Continue reading »

Tagged with:  

jQuery: evitar cache em chamadas ajax

On 3 de abril de 2012, in jQuery, by andersonstraube

O cache em requisições ajax é um problema comum entre os desenvolvedores iniciantes e principalmente com o Internet Explorer. Para resolver esses problemas vou dar 2 dicas que o jQuery utiliza:

1 – Setar o cache na própria requisição ajax:


$('#formCadastro').submit(function(e) {
    e.preventDefault();	
    $.ajax( {
        url: "arquivo.cfm",
        type: 'POST',
        cache: false, // aqui definimos o cache como false
        data: $(this).serialize(),
        success: function(dados) {
                console.log(dados);
        }
    });
});

2 – Setar o cache como false para todas as requisições ajax:


$.ajaxSetup({ cache: false });

O ajaxSetup é uma configuração global da sua aplicação, com ela não precisamos ficar definindo as configurações em cada requisição. Veja mais em http://api.jquery.com/jQuery.ajaxSetup/

Tagged with: