PDA

View Full Version : [java] switch pattern?


carter100
04-11-2010, 06:27
JCiao, volevo sapere, quando vi trovate con una serie infinita di switch, esiste qualche pattern da usare?
Grazie

ally
04-11-2010, 11:47
JCiao, volevo sapere, quando vi trovate con una serie infinita di switch, esiste qualche pattern da usare?
Grazie

...cosa intendi per serie infinita?...magari la solzione è rivedere alcuni elementi dell'applicazione...

carter100
04-11-2010, 12:47
Fai conto 2 stringhe, a e b.

switch(a) {
case 1:
switch(b) {
case 'a': //qualcosa
break;
case 'b': //fai altro
//eccetera eccetera.


Immagina che lo switch esterno abbia 3/4 possibili valori, idem lo switch sulla b. Possibili soluzioni?
Grazie ;)

jappilas
04-11-2010, 14:27
il Command (http://it.wikipedia.org/wiki/Command_pattern) dovrebbe esserti utile - non a caso in diamonds ne è stato fatto un uso estensivo proprio per eliminare switch e catene di if ...
in sostanza crei una classe concreta che implementi un' interfaccia monometodo, tipo execute(), per ogni caso dell' if chain o switch - e a runtime invochi l' execute() dell' oggetto corrispondente alla condizione (che avrai istanziato e organizzato come ti è più comodo, ad esempio in una mappa o in un array)

british
04-11-2010, 14:48
Fai conto 2 stringhe, a e b.

switch(a) {
case 1:
switch(b) {
case 'a': //qualcosa
break;
case 'b': //fai altro
//eccetera eccetera.


Immagina che lo switch esterno abbia 3/4 possibili valori, idem lo switch sulla b. Possibili soluzioni?
Grazie ;)

scusa ma non è come quello di cui si parlava qui (http://www.hwupgrade.it/forum/showthread.php?t=2271839)? o mi sfugge qualcosa?

ciao!

british

carter100
05-11-2010, 08:19
il Command (http://it.wikipedia.org/wiki/Command_pattern) dovrebbe esserti utile - non a caso in diamonds ne è stato fatto un uso estensivo proprio per eliminare switch e catene di if ...
in sostanza crei una classe concreta che implementi un' interfaccia monometodo, tipo execute(), per ogni caso dell' if chain o switch - e a runtime invochi l' execute() dell' oggetto corrispondente alla condizione (che avrai istanziato e organizzato come ti è più comodo, ad esempio in una mappa o in un array)

scusa ma non è come quello di cui si parlava qui (http://www.hwupgrade.it/forum/showthread.php?t=2271839)? o mi sfugge qualcosa?

ciao!

british

Grazie a entrambi, era simile a quel thread, pensavo ci fosse qualcosa di diverso data la (eccessiva) vastità degli switch case.
A una prima lettura il command è simile all'abstract factory, dopo me lo leggo meglio, può far sempre comodo ;)
Grazie ancora!