Membro desde: 10/07/2006 10:37:23
Mensagens: 745
Offline
Ola... tenho a seguinte situação: tenho varios codigos em hexadecimal cada um desses codigos realizara uma operação diferente ao ser lido... posso fazer isto utilizando um monte de ifs porem não acho uma solução nada elegante... minha duvida é existe algum pattern ou algo que possa mapear cada: [codigo x função] ou seja algo como um Map que tenha os codigos hexadecimais como chaves e inves de retornar um valor ele faça uma determinada função?
Membro desde: 29/07/2004 16:10:13
Mensagens: 10542
Localização: SP
Offline
A propósito, como estou achando que os códigos que você está usando são pequenos e consecutivos, a solução mais rápida envolveria um "switch", não um monte de ifs, se você está simulando um processador ou interpretando algo semelhante a bytecodes.
Membro desde: 10/07/2006 10:37:23
Mensagens: 745
Offline
thingol... acertou na mosca... é exatamente uma arquitetura que vou simular... e qdo disse um monte de ifs me referia tbm a coisas com switch... neste caso usaria switch por ser diversos codigos (de 0 a FF) porem queria meio que fujir da implementação de um switch gigantesco...~ao meu ver não seria uma solução muito elegante usar um switch gigantesco... em C é possivel fazer ponteiros de funções... porem em java teria algum mecanismo que possa fazer algo semelhante a isto?
Membro desde: 29/07/2004 16:10:13
Mensagens: 10542
Localização: SP
Offline
No caso do C# existe o Delegate, e no Java 7.0 está proposta a criação do novo recurso "Closure". Tudo isso evita a criação de novas classes (mesmo que sejam classes anônimas).
Note que o jeito mais rápido para executar o seu programa ainda é o velho e bom "switch" gigante.
Bacharel em Ciência da Computação - UFMT
Especialista em Desenvolvimento Java - CEFET/MT
SCJP 6.0 - 18/12/2007 - PASS - 88%
SCWCD 5 - 17/05/2008 - PASS - 79%
Próximos: SCJD (desenvolvendo o projeto), SCBCD e SCJA se sobrar uma grana
Computação: uma ciência holística e exotérica!
E então veio Deus a terra e disse aos homens: Não dividireis por zero.