[Cascavel-pm] evitando estruturas "switch-case" em métodos de uma classe

Alceu R. de Freitas Jr. glasswalk3r em yahoo.com.br
Quarta Março 28 09:56:05 PDT 2007


Olá monges,

Estou com uma dúvida sobre como evitar estruturas
"switch-case" dentro de métodos de uma dada classe.

Por exemplo, se eu tenho uma classe que pode exportar
seus valores para diversos formatos, por exemplo:

sub to_xml() {}
sub to_html() {}
sub to_csv() {}

Supondo agora que eu precise disparar um desses
métodos devido a um evento qualquer que, dependendo do
formato desejado, usasse um parâmetro indicando o tipo
de formato desejado.

Como eu poderia implementar isso sem usar algo
parecido com o código abaixo?

sub export {

    my $self = shift;

    CASE: {

        if ($param eq 'xml') {

            $self->to_xml();
            last CASE;

        }

        # outras opções...

    }

}

Eu olhei alguns design patterns como o State e o
Strategy, mas as definições não parecem se aplicar
muito bem nesse caso específico. Eu mesmo poderia
tentar definir uma hierarquia de subclasses para cada
um dos formatos e depois usar uma Factory parar gerar
os objetos e chamar um método polimórfico, mas parece
muito trabalho para pouco resultado.

Dicas? Obrigado a todos.

[]'s


Alceu Rodrigues de Freitas Junior
--------------------------------------
glasswalk3r em yahoo.com.br
http://www.imortais.cjb.net
-----------------------------------------------------------------------
A well-used door needs no oil on its hinges.
A swift-flowing stream does not grow stagnant.
Neither sound nor thoughts can travel through a vacuum.
Software rots if not used.
These are great mysteries -- The Tao Of Programming, 5.1

__________________________________________________
Fale com seus amigos  de graça com o novo Yahoo! Messenger 
http://br.messenger.yahoo.com/ 


Mais detalhes sobre a lista de discussão Cascavel-pm