Supponiamo di avere un file XML config come il seguente:
<myapp>
<settings/>
<output>
<mailto>mail service configuration parameters</mailto>
OR
<smsto>sms service configuration parameters</smsto>
<output>
Mentre il nodo delle impostazioni avrà sempre la stessa struttura, il nodo di output potrebbe avere strutture diverse, a seconda che si tratti di una posta o di un output SMS.
Le classi Java saranno:
class MyAppConfig {
String settingXXX;
{what type?} output;
}
Ovviamente avrò un class MailTo {}
e un class SmsTo {}
.
Poiché l'output può essere un MailTo
o un SmsTo
oggetto, può essere:
- un tipo di oggetto, poiché
MailTo
eSmsTo
non hanno alcuna superclasse in Comune. - un'interfaccia
Output
, che a sua volta è implementata da MailTo e SmsTo. PoichéMailTo
eSmsTo
non hanno nulla in comune, l'interfacciaOutput
sarà vuota e "collasserà" su un'interfaccia marker.
Penso che, data questa situazione, questa sia l'unica implementazione possibile.
Il codice cliente verrà convertito in Object
o Output
in MailTo
o SmsTo
, che deve essere gestito in modo diverso.
Tuttavia, sono perplesso perché i modelli di progettazione (libro GoF) sembrano non considerare questo tipo di situazioni.
Qual è lo schema del "mondo reale" che applicheresti in questo caso?