Interface Implementation in Java

27 March, 2007 (07:01) | java, programming

Quante volte vi siete trovati di fronte alla dichiarazione di un’interfaccia

1: interface SomeInterface {
2:     ...
3: }

Per poi scoprire che ne esiste una sola implementazione?

1: class SomeInterfaceImpl implements SomeInterface {
2:     ...
3: }

Non so voi, ma il risultato, dal un punto di vista della leggibiiltà, lo trovo estremamente poco elegante, il nome SomeInterfaceImpl è stato scelto per una limitazione tecnica, non certo per aderire al linguaggio di dominio. Vi offro un’alternativa (più che altro un workaround, la limitazione rimane)

01: interface SomeInterface {
02:
03:         public static class Implementation implements SomeInterface {
04:              ...
05:         }
06:
07: }

Che ci porterebbe ad avere

01: SomeInterface object = new SomeInterface.Implementation();

Che non è il massimo, ma secondo me è meglio di prima

Comments

Comment from alepuzio
Date: February 18, 2009, 11:38 am

ciao,
concordo con te che il primo modo è veramente brutto e confusionario, ma penso che la tua soluzione va bene quando sai già che l’applicativo per un po’ di tempo implementetà in un solo modo quella interfaccia. Se dopo qualche mese devi implementare quell’interfaccia in un altro modo col tuo sistema l’interfaccia dovrà avere non una ma due public static class.
Non penso sia uno spettacolo migliore; con l’altro sistema il sistema è più pulito (almeno in prospettiva).

Comment from admin
Date: February 19, 2009, 8:14 pm

Bhè dai, c’è sempre il refactoring :-)

Write a comment